Pagini recente » Cod sursa (job #847965) | Cod sursa (job #2726609) | Cod sursa (job #2248337) | Cod sursa (job #2853511) | Cod sursa (job #1847537)
#include <cstdio>
#include <stack>
#include <algorithm>
using namespace std;
const int NMAX=5000;
struct ELEM
{
int val,poz;
};
int v[NMAX+5];
ELEM s[NMAX+5];
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;
}
}
int sol=n+1,max=tpoz+1,st;
tpoz=1;
for(i=1;i<=n;++i)
{
if(v[i]==tpoz)
{
tpoz++;
if(v[i]==1)
st=i;
}
if(tpoz==2 && v[i]==1)
st=i;
if(tpoz==max)
{
if(sol>i-st+1)
{
sol=i-st+1;
tpoz=1;
}
}
}
if(sol<=n)
printf("%d\n",sol);
else
printf("-1\n");
return 0;
}