Pagini recente » Cod sursa (job #2263706) | Cod sursa (job #1862379) | Cod sursa (job #2260780) | Profil kwr1998 | Cod sursa (job #1953745)
#include <bits/stdc++.h>
using namespace std;
int val[5005],poz[5005];
int v1[5005],v2[5005];
int bs(int val,int n)
{
int med,dr,st;
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 2147483647;
}
int main()
{
freopen("secv.in", "r",stdin);
freopen("secv.out", "w",stdout);
int n,i,nn;
scanf("%d", &n);
for(i = 1; i <= n; i++)
scanf("%d", &val[i]);
if(n == 1)
{
printf("1");
return 0;
}
memcpy(v1,val,sizeof(val));
sort(v1 + 1,v1 + n + 1);
nn = 1;
v2[1] = v1[1];
for(i = 2; i <= n; i++)
{
if(v1[i] != v1[i - 1])
{
nn++;
v2[nn] = v1[i];
}
}
for(i = 1; i <= n; i++)
poz[i] = bs(val[i],nn);
int mini = 2147483647,j,k = 0,ok;
for(i = 1; i <= n; i++)
{
if(poz[i] == 1)
{
k = 2;
j = i + 1;
while(k <= nn)
{
ok = 0;
for(; j <= n; j++)
{
if(poz[j] == k)
{
ok = 1;
break;
}
}
if(ok == 1)
k++;
else break;
}
if(k > nn)
if(j - i + 1 < mini)
mini = j - i + 1;
}
}
if(mini != 2147483647)
printf("%d",mini);
else
printf("-1");
return 0;
}