Cod sursa(job #238137)

Utilizator razyelxrazyelx razyelx Data 31 decembrie 2008 17:54:40
Problema Secv Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.58 kb
#include <stdio.h>
FILE*in = fopen("secventa.in","r");
FILE*out= fopen("secventa.out","w");

long long s[5002],x[5002];

void divizeaza(int s, int d, int &m){m=(s+d)/2;}

void interclaseaza(int s, int d, int m, long long x[5002]){

	int i=s,j=m+1,k=1;

	long long v[5002];
	while(i<=m && j<=d){

		if(x[i]<x[j]){v[k]=x[i];i++;}

		else
		     if(x[i]>x[j]){v[k]=x[j];j++;}
		k++;
	}
	if(i<=m) while(i<=m){v[k]=x[i];i++;k++;}
	else while(j<=d){v[k]=x[j];j++;k++;}

	for(k=1,i=s;i<=d;k++,i++){
		x[i]=v[k];
	}
}
void mergesort(int s,int d, long long x[5002]){
	int m;
	if(s<d){
		divizeaza(s,d,m);
		mergesort(s,m,x);
		mergesort(m+1,d,x);
		interclaseaza(s,d,m,x);
	}
}

int main(){

    int n=0,i=0,j=0,t=0,ok=0,inc=0,sfr=0,min=5001;

    fscanf(in,"%d",&n);

    for(i=1;i<=n;i++){


       fscanf(in,"%lld",&x[i]);



       ok=1;
       for(j=1;j<=t && ok;j++)
	  if(s[j] == x[i])ok = 0;



       if(ok){
	 t++;
	 s[t] = x[i];
       }


    }
    /*
    mergesort(1,t,s);

    inc=0;sfr=n;i=1;

    while(i<=t){

       ok=1;

       if(i == 1){

	 for(j=inc+1;j<=n && ok;j++)
	    if(x[j] == s[i])ok=0;

	 if(!ok){inc = j-1;i++;}
	 else break;

	 continue;
       }


       if(i == t){
	 for(;j<=n && ok;j++)
	    if(x[j] == s[i])ok=0;

	    if(!ok){

	      i=1;
	      if(min>sfr-inc+1){min = sfr-inc+1;sfr = j-1;}
	    }else i=1;

	 continue;
       }

       for(;j<=n && ok;j++)
	  if(x[j] == s[i])ok = 0;

       if(!ok)i++;
       else i=1;

    } */

    fprintf(out,"%d",min);

    return 0;
}