Cod sursa(job #2127367)

Utilizator stefzahZaharia Stefan Tudor stefzah Data 10 februarie 2018 16:31:54
Problema Secv Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("secv.in");
ofstream fout("secv.out");
int N,i,j,ct,d[5005],mx=999999;
struct elem{int val,poz;}a[5005],b[5005];
inline bool cmp1(elem A, elem B)
  {return A.val<B.val;
  }
inline bool cmp2(elem A, elem B)
  {return A.poz<B.poz;
  }
int main()
{fin>>N;
 for(i=1;i<=N;i++)
    {fin>>a[i].val;
     a[i].poz=i;
    }
 sort(a+1,a+N+1,cmp1);
 a[0].val=-1;
 for(i=1;i<=N;i++)
    {if(a[i].val>a[i-1].val)ct++;
     b[i].val=ct;
     b[i].poz=a[i].poz;
    }
 sort(b+1,b+N+1,cmp2);
 for(i=1;i<=ct;i++)
    d[i]=-999999;
    //fout<<ct<<" ";
 for(i=1;i<=N;i++)
    {if(b[i].val==1)d[1]=i;
     else {d[b[i].val]=d[b[i].val-1];
           if(b[i].val==ct&&mx>i-d[b[i].val]+1)mx=i-d[b[i].val]+1;
          }
    }
 if(mx>999999)fout<<"-1";
 else fout<<mx;
}