Pagini recente » Cod sursa (job #1631644) | Cod sursa (job #245032) | Cod sursa (job #2471263) | Cod sursa (job #1250857) | Cod sursa (job #1863414)
#include <cstdio>
#include <algorithm>
using namespace std;
int v[5001],v1[5001],v2[5001];
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 i,n,nr,k=1,l,val,j,lmin,poz=0;
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);
for(i=1;i<=n;i++)
{
nr=v1[i];
if(nr!=v2[k-1])
{
v2[k]=nr;
k++;
}
}
k--;
for(i=1;i<=n;i++)
{
poz=bs(v[i],k);
v[i]=poz;
}
lmin=5001;
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==k+1)
{
l=j-i+1;
if(l<lmin)
lmin=l;
break;
}
}
}
if(lmin==5001)
printf("-1");
}
else
lmin=1;
printf("%d",lmin);
return 0;
}