Pagini recente » Cod sursa (job #1321397) | Cod sursa (job #2574902) | Cod sursa (job #708625) | Cod sursa (job #754187) | Cod sursa (job #1863002)
#include<cstdio>
#include<algorithm>
using namespace std;
const int NMAX=5005;
int v[NMAX],v1[NMAX],v2[NMAX];
int bs(int val, int n){
int med,st=1,dr=n;
while(st<=dr){
med=(st+dr)/2;
if(v2[med]==val)
return med;
else
if(v2[med]<val)
st=med+1;
else
dr=med-1;
}
return 0;
}
int main(){
freopen("secv.in","r",stdin);
freopen("secv.out","w",stdout);
int n,i,dif=0,poz,last,minn=NMAX,lg=0,val,j;
scanf("%d", &n);
for(i=1;i<=n;i++)
scanf("%d", &v[i]);
for(i=1;i<=n;i++)
v1[i]=v[i];
sort(v1+1, v1+1+n);
dif=1;
v2[dif]=v1[dif];
last=v1[dif];
for(i=2;i<=n;i++){
if(v1[i]!=last){
v2[++dif]=v1[i];
last=v1[i];
}
}
for(i=1;i<=n;i++){
poz=bs(v[i], dif);
v[i]=poz;
}
for(i=1;i<=n;i++){
if(v[i]==1){
val=2;
for(j=i+1;j<=n;j++){
if(v[j]==val){
val++;
if(val==dif+1){
lg=j-i+1;
if(lg<minn)
minn=lg;
break;
}
}
}
}
}
if(minn==NMAX)
minn=-1;
printf("%d", minn);
return 0;
}