Cod sursa(job #588288)

Utilizator andrei.finaruFinaru Andrei Emanuel andrei.finaru Data 7 mai 2011 16:48:51
Problema Secv Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include<fstream>
#include<set>
#include<cassert>
using namespace std;
ifstream f("secv.in");
ofstream g("secv.out");
int n,v[5001],c,p[5002],nr,min1,ok,lmin,l,max1,ca;
set<int> s;
set<int>::iterator it,o;
int main()
{ int i,k;
  f>>n;
  assert(n>0);
  min1=lmin=2000000001;
  for(i=1;i<=n;i++) 
	  { f>>v[i];
	    s.insert(v[i]);
	    if(v[i]<min1) min1=v[i],nr=1,p[nr]=i;
		   else if(v[i]==min1) nr++, p[nr]=i;
	    if(v[i]>max1) max1=v[i];
	  }
  o=s.end();
  p[nr+1]=n+1;
  for(k=nr;k>0;--k)
	  {i=p[k];
	   it=s.begin();
	   ++it;
	   ok=0;
	   while(!ok&&i<=n)
		   { if(v[i]==*it) 
			   { ++it;
				 if(it==o) 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;
}