Pagini recente » Cod sursa (job #557820) | Cod sursa (job #2168920) | Cod sursa (job #557998) | Cod sursa (job #2943659) | Cod sursa (job #590475)
Cod sursa(job #590475)
#include <cstdio>
#include <fstream>
#include <algorithm>
using namespace std;
#define N 8192
int v[N],b[N];
inline bool c (int i,int j){
return v[i]<v[j];}
int main ()
{
int n,m=0,k=-1;
ifstream in ("secv.in");
freopen ("secv.out","w",stdout);
in>>n;
if(n==1){
printf("1");
return 0;
}
for(int i=1;i<=n;++i){
in>>v[i];
b[i]=i;
}
sort(b+1,b+n+1,c);
for(int i=1;i<=n;++i)
if(v[b[i]]==k)
v[b[i]]=m;
else{
++m;
k=v[b[i]];
v[b[i]]=m;
}
int r=N;
for(int i=1;i+m<=n+1;++i)
if(v[i]==1){
k=2;
for(int j=i+1;j<=n&&k<=m;++j){
if(k==v[j])
++k;
if(m+1==k&&j+1<r+i)
r=j-i+1;
}
}
printf("%d",r==N?-1:r);
return 0;}