Cod sursa(job #165061)

Utilizator ciprianfFarcasanu Alexandru Ciprian ciprianf Data 25 martie 2008 11:44:08
Problema Secv Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <stdio.h>
#include <stdlib.h>
#define INF 2000000000
int comp(const void*a,const void*b){
	int *aa=(int*)a,*bb=(int*)b;
	int aaa=*aa,bbb=*bb;
	if(aaa<bbb) return -1;
	if(aaa>bbb) return 1;
	return 0;
}
int main(){
	int n,v[5005],w[5005]={0},i,j,k=0,m=0,ok,l=INF;
	freopen("secv.in","r",stdin);
	freopen("secv.out","w",stdout);
	scanf("%d",&n);
	for(i=1;i<=n;i++){
		scanf("%d",&v[i]);
		w[i]=v[i];
	}
	qsort(w,n+1,sizeof(w[0]),comp);
	w[0]=1;
	for(i=2;i<=n;i++)
		if(w[i]!=w[w[0]]) w[++w[0]]=w[i];
	for(i=1;i<=n;i++)
		if(v[i]==w[1]){
			ok=0;
			k=2;
			for(j=i+1;j<=n;j++){
				if(v[j]==w[k])
					k++;
				if(k==w[0]+1) { ok=1; break; }
			}
			if(ok && j-i+1<l)
				l=j-i+1;
		}
	if(m==1) { printf("1"); return 0; }
	if(l!=INF) printf("%d",l);
	else printf("-1");
	return 0;
}