Pagini recente » Cod sursa (job #1532171) | Cod sursa (job #810316) | Cod sursa (job #3225572) | Cod sursa (job #784453) | Cod sursa (job #588288)
Cod sursa(job #588288)
#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;
}