Pagini recente » Cod sursa (job #2721829) | Cod sursa (job #2369044) | Cod sursa (job #776557) | Cod sursa (job #2415683) | Cod sursa (job #2769819)
#include <bits/stdc++.h>
#define X first
#define poz second
using namespace std;
ifstream fin("secv.in");
ofstream fout("secv.out");
int n,i,f[5010],w[5010],nr,D[5010],minim,poz1,j,sol=6000;
pair<int,int> v[5010];
int main(){
fin>>n;
for(i=1;i<=n;i++){
fin>>v[i].X;
w[i]=v[i].X;
v[i].poz=i;
}
sort(v+1,v+n+1);
v[0].X=-1;
for(i=1;i<=n;i++){
if(v[i].X!=v[i-1].X)
nr++;
f[v[i].poz]=nr;
}
for(i=1;i<=n;i++)
if(f[i]==1)
break;
D[i]=i;
i++;
for(;i<=n;i++)
if(f[i]==1)
D[i]=i;
else{
minim=6000;
for(j=1;j<i;j++)
if(f[j]==f[i]-1&&D[j]&&i-D[j]+1<minim){
minim=i-D[j]+1;
poz1=D[j];
}
if(minim!=6000)
D[i]=poz1;
}
for(i=1;i<=n;i++)
if(f[i]==nr&&D[i])
sol=min(sol,i-D[i]+1);
if(sol==6000)
fout<<-1;
else
fout<<sol;
return 0;
}