Pagini recente » Cod sursa (job #2915870) | Cod sursa (job #2481206) | Cod sursa (job #2717820) | Cod sursa (job #2178795) | Cod sursa (job #1863018)
#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]);
if(n!=1){
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;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;
}
else
minn=v[1];
printf("%d", minn);
return 0;
}