Cod sursa(job #93767)

Utilizator blasterzMircea Dima blasterz Data 20 octombrie 2007 09:26:14
Problema Secv Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
using namespace std;
#include <cstdio>
#include <set>
#define un unsigned
un int a[5001], n;
un int x[5001], nx;

void read()
{
  freopen("secv.in","r",stdin);
  scanf("%d\n", &n);
  for(un int i=1;i<=n;++i) scanf("%d ", a+i);
  set<un int>Q;
  for(un int i=1;i<=n;++i) Q.insert(a[i]);
  for(set<un int>::iterator it=Q.begin();it!=Q.end();++it) x[++nx]=*it;
}

void solve()
{
  un int i, j, nmin=0x3f3f3f3f;
  un int p;

  for(i=1;i<=n;++i)
    if(a[i]==x[1])
      {
	p=2;
	for(j=i+1;j<=n;++j)
	  if(a[j]==x[p])
	    {
	      ++p;
	      if(p>nx) break;
	    }
	if(nmin>j-i && p==nx+1){nmin=j-i;}
      }
  freopen("secv.out","w",stdout);
  if(n==1) printf("1\n");
  else
    {
      if(nmin==0x3f3f3f3f) nmin=-2;
      printf("%d\n", nmin+1);
    }
}

int main()
{
  read();
 
  solve();
  return 0;
}