Cod sursa(job #628776)

Utilizator DeadEyeNaiba Mihai Lucian DeadEye Data 2 noiembrie 2011 04:56:19
Problema Secv Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include<cstdio>
#include<algorithm>
using namespace std;

const int maxN=5001;
int n,nr,poz,a[maxN],b[maxN],c[maxN];

void read()
{
	int i;
	freopen("secv.in","r",stdin);
	freopen("secv.out","w",stdout);
	scanf("%d",&n);
	for(i=1;i<=n;++i)
		scanf("%d",&a[i]);
}

void work()
{
	int i,j;
	int s=2*maxN;
	b[0]=-1;
	
	for(i=1;i<=n;++i)
		b[i]=a[i];
	sort(b+1,b+n+1);
	nr=0;
	
	for(i=1;i<=n;++i)
		if(b[i-1]!=b[i])
		{
			nr++;
			c[nr]=b[i];
		}
		
	for(i=1;i<=n-nr+1;++i)
	{
		poz=i; j=1;
		while((j<=nr) && (poz<=n))
		{
			while((a[poz]!=c[j])&&(poz<=n))
				poz++;
			while((a[poz]==c[j])&&(j<=nr)&&(poz<=n))
			{
				j++;
				poz++;
			}
		}
		if((j==nr+1) && (poz-i<s))
			s=poz-i;
	}
	
	if(s==2*maxN)
		printf("-1\n");
	else printf("%d\n",s);
}

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