Cod sursa(job #717629)

Utilizator iarbaCrestez Paul iarba Data 20 martie 2012 08:42:33
Problema Secv Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <stdio.h>
FILE *f,*g;
long o[5009],a[5009],n,i,t,lmax,x,j;

void qsort(int l,int r)
{
int ii,jj,x,y;
ii=l;jj=r;x=o[(l+r)/2];
do{
while(o[ii]<x){ii++;}
while(o[jj]>x){jj--;}
if(ii<=jj){
        y=o[ii];o[ii]=o[jj];o[jj]=y;
ii++;jj--; 
        }
  }while(ii<=jj);
  if(l<jj){qsort(l,jj);}
  if(ii<r){qsort(ii,r);}
}

int main()
{
	f=fopen("secv.in","r");
	g=fopen("secv.out","w");
	fscanf(f,"%ld",&n);
	for(i=1;i<=n;i++){
		fscanf(f,"%ld",&a[i]);
		o[i]=a[i];
	                 }
	qsort(1,n);
	t=1;
	for(i=2;i<=n;i++) if(o[i]!=o[i-1]){t++;o[t]=o[i];}
	lmax=n+1;
	for(i=1;i<=n-t+1;i++){
			x=1;
			for(j=i;j<=n;j++){
				    if(o[x]==a[j])x++;
					if(x-(t+1)==0){if((j-i+1)<lmax)){lmax=j-i+1;}}
			                       }
	                 }
	if(lmax!=n+1)fprintf(g,"%ld",lmax);
	else fprintf(g,"-1");
	fclose(f);fclose(g);
return 0;
}