Cod sursa(job #527796)

Utilizator andrei.finaruFinaru Andrei Emanuel andrei.finaru Data 1 februarie 2011 12:08:41
Problema Secv Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<fstream.h>
ifstream f("secv.in");
ofstream g("secv.out");
int n,v[5001],c,p[5002],nr,min,ok,lmin,l,max,ca;
int main()
{ int i,k;
  f>>n;
  min=lmin=2000000001;
  for(i=1;i<=n;i++) 
	  {f>>v[i];
	   if(v[i]<min) min=v[i],nr=1,p[nr]=i;
		  else if(v[i]==min) nr++, p[nr]=i;
	   if(v[i]>max) max=v[i];
	  }
  p[nr+1]=n+1;
  for(k=nr;k>0;k--)
	  {i=p[k];
	   c=2;
	   ok=0;
	   while(!ok&&i<=n&&(c>ca||i<p[k+1]))
		   {if(v[i]==c) 
			   {c++;
			    if(c>max) ok=1, l=i-p[k]+1,c=1;
			   }
			 i++;
		   }
		ca=c;
	   if(l<lmin&&ok) lmin=l;
	  }
  if(lmin<2000000001) g<<lmin<<'\n';
	  else g<<-1<<'\n';
  f.close(); g.close();
  return 0;
}