Pagini recente » Cod sursa (job #2063810) | Cod sursa (job #66651) | Cod sursa (job #2553256) | Cod sursa (job #915302) | Cod sursa (job #1327053)
#include <fstream>
#include <map>
#define NMAX 5000
using namespace std;
int n;
int v[NMAX+5];
map<int,int> harta;
int frecv[NMAX+5];
int din[NMAX+5];
int main()
{
ifstream cin("secv.in");
ofstream cout("secv.out");
cin>>n;
for(int i=1;i<=n;i++) {
cin>>v[i];
harta[v[i]]=1;
}
int m,i;
map<int,int>::iterator it;
for(i=1,it=harta.begin();it!=harta.end();it++,i++) {
it->second=i;
m=i;
}
for(i=1;i<=n;i++)
v[i]=harta[v[i]];
/*int best=NMAX+5,j,searched;
for(i=1;i<=n;i++)
if(v[i]==1) {
searched=2;
for(j=i+1;j<=n;j++)
if(v[j]==searched) {
searched++;
if(searched==m+1)
break;
}
if(searched<m+1)
continue;
if(j-i+1<best)
best=j-i+1;
}*/ //BRUT
for(i=0;i<=m;i++)
frecv[i]=-1;
for(i=1;i<=n;i++)
din[i]=-1;
for(i=1;i<=n;i++) {
if(frecv[v[i]-1]!=-1)
din[i]=din[frecv[v[i]-1]];
else if(v[i]==1)
din[i]=i;
else
din[i]=-1;
frecv[v[i]]=i;
}
int best=NMAX+5;
for(int i=1;i<=n;i++)
if(v[i]==m && din[i]!=-1 && i-din[i]+1<best)
best=i-din[i]+1;
if(best==NMAX+5)
cout<<"-1\n";
else
cout<<best<<'\n';
cin.close();
cout.close();
return 0;
}