Cod sursa(job #276055)

Utilizator ooctavTuchila Octavian ooctav Data 10 martie 2009 20:19:12
Problema Secv Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
// secv.cpp : Defines the entry point for the console application.
//

#include <stdio.h>
#include <stdlib.h>

int e[7001];
char c[80000];
int f[7001];
int cont=0;
int compar(const void *a,const void *b)
{
	return(*(int*)a-*(int*)b);
}
void parsare()
{
	int i,nr=1,x=0,j;
	char b;
	fgets(c,60000,stdin);
	for(i=0;c[i];i++)
		if(c[i]==' ')
		{
			b=1;
			e[nr++]=x;
			for(j=1;j<=cont;j++)
				if(f[j]==x)
				{
					b=0;
					break;
				}
			if(b)
				f[++cont]=x;
			x=0;
		}
		else
			x=x*10+c[i]-'0';
	e[nr]=x;
	b=1;
	for(j=1;j<=cont;j++)
			if(f[j]==x)
			{
				b=0;
				break;
			}
	if(b)
		f[++cont]=x;
}



int main()
{
	freopen("secv.in","r",stdin);
	freopen("secv.out","w",stdout);
	int i,j,n,nr,secvmin=15001;
	scanf("%d\n",&n);
	parsare();
	qsort(f,cont,sizeof(int),compar);
	for(i=1;i<=n;i++)
		if(e[i]==f[1])
		{
			j=i+1;
			nr=f[1];
			while(nr<cont || e[j-1]!=f[cont])
			{
				if(e[j]==f[nr+1])
					nr++;
				j++;
			}
		if(secvmin>j-i)
			secvmin=j-i;
		}
	if(secvmin==15001)
		printf("-1");
	else
		printf("%d\n",secvmin);

	return 0;
}