Cod sursa(job #206336)

Utilizator AndreiDDiaconeasa Andrei AndreiD Data 5 septembrie 2008 22:58:42
Problema Secv Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <stdio.h>

#include <vector>
#include <algorithm>

using namespace std;

#define FIN "secv.in"
#define FOUT "secv.out"

#define pb push_back

#define x begin
#define y end

#define NMAX 10000
#define INF 666666

int N;
vector<int> v;
int v1[NMAX],frecv[NMAX];


int main()
{
int i,X,nr,REZ=INF;

freopen(FIN,"rt",stdin);
scanf("%d", &N);
for (i=0;i<N;++i)
     {
      scanf("%d", &X);
      v.pb(X);
      }
sort(v.x(),v.y());
nr=frecv[v[0]]=1;
for (i=1;i<N;++i)
     if (v[i]!=v[i-1])
	 {
	  nr++;
	  frecv[v[i]]=nr;
	 }

for (i=1;i<=nr;++i)
      v1[i]=-INF;

for (i=0;i<=N;++i)
     {
     if (frecv[v[i]]==1)
	  v1[1]=i;
	  else
	  v1[frecv[v[i]]]=v1[frecv[v[i]]-1];
     if (i-v1[nr]<REZ)
	 REZ=i-v1[nr];
}

freopen(FOUT,"wt",stdout);
if (REZ==INF)
    printf("-1");
    else
    printf("%d\n",REZ+1);

return 0;
}