Pagini recente » Cod sursa (job #1292605) | Cod sursa (job #1971995) | Cod sursa (job #2833447) | Cod sursa (job #2415379) | Cod sursa (job #1847573)
#include <cstdio>
#include <algorithm>
using namespace std;
int v[5005],s[5005],x[5005];
int bs(int st,int dr,int val)
{
int med;
while(st<=dr)
{
med=(st+dr)/2;
if(val==x[med])
return med;
else
if(val<x[med])
dr=med;
else
st=med;
}
return med;
}
int main()
{
freopen("secv.in","r",stdin);
freopen("secv.out","w",stdout);
int n,i,j,lmin=5005,k;
scanf("%d",&n);
for(i=1;i<=n;i++){
scanf("%d",&v[i]);
s[i]=v[i];
}
sort(s+1,s+n+1);
i=j=1;
while(i<=n)
{
x[j]=s[i];
j++;
while(s[i]==s[i+1]&&i<=n)
i++;
i++;
}
for(i=1;i<=n;i++)
v[i]=bs(1,j,v[i]);
j--;
for(i=1;i<=n;i++)
if(v[i]==1)
{
int poz=2;
for(k=i+1;k<=n&&poz<=j;k++)
if(v[k]==poz)
poz++;
if(poz>j)
if(k-i<lmin)
lmin=k-i;
}
if(lmin==5005)
printf("-1");
else
printf("%d",lmin);
return 0;
}