Pagini recente » Cod sursa (job #2374919) | Cod sursa (job #2336101) | Cod sursa (job #3163280) | Cod sursa (job #2280534) | Cod sursa (job #1847567)
#include <cstdio>
#include <stack>
#include <algorithm>
#include <vector>
using namespace std;
const int NMAX=5000;
struct ELEM
{
int val,poz;
};
int v[NMAX+5];
ELEM s[NMAX+5];
vector <int> ones;
bool cmp(ELEM a,ELEM b)
{
if(a.val==b.val)
return a.poz<b.poz;
return a.val<b.val;
}
int main()
{
freopen("secv.in","r",stdin);
freopen("secv.out","w",stdout);
int i,n,x;
scanf("%d",&n);
for(i=1;i<=n;++i)
{
scanf("%d",v+i);
s[i].val=v[i];
s[i].poz=i;
}
sort(s+1,s+n+1,cmp);
int t=-1,tpoz=0;
for(i=1;i<=n;++i)
{
if(t==s[i].val)
v[s[i].poz]=tpoz;
else
{
tpoz++;
t=s[i].val;
v[s[i].poz]=tpoz;
}
if(tpoz==1)
ones.push_back(s[i].poz);
}
int sol=n+1,max=tpoz+1;
for(int l=0;l<ones.size();++l)
{
tpoz=2;
for(i=ones[l]+1;i<=n;++i)
{
if(v[i]==tpoz)
tpoz++;
if(tpoz==max)
{
if(sol>i-ones[l]+1)
sol=i-ones[l]+1;
break;
}
}
}
if(sol<=n)
printf("%d\n",sol);
else
printf("-1\n");
return 0;
}