Pagini recente » Cod sursa (job #106718) | Cod sursa (job #935629) | Cod sursa (job #2282974) | Cod sursa (job #2634689) | Cod sursa (job #1863039)
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int v[5005],v1[5005],vc[5005],k;
int bs(int val)
{
int med,st,dr;
st=1;
dr=k;
while (st<=dr)
{
med=(st+dr)/2;
if (vc[med]==val)
return med;
else if(vc[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,j,lmin,l,val;
scanf ("%d",&n);
for (i=1; i<=n; i++)
{
scanf ("%d",&v[i]);
v1[i]=v[i];
}
sort(v1+1,v1+n+1);
k=1;
vc[k]=v1[k];
int last=v1[k];
for (i=2; i<=n; i++)
if (v1[i]!=last)
{
vc[++k]=v1[i];
last=v1[i];
}
for (i=1; i<=n; i++)
v[i]=bs(v[i]);
lmin=n+5;
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==k+1)
{
l=j-i+1;
if (l<lmin)
lmin=l;
break;
}
}
}
if(n!=1)
{
if(lmin!=n+5)
printf("%d",lmin);
else printf("-1");
}
else printf("1");
return 0;
}