Pagini recente » Cod sursa (job #768398) | Cod sursa (job #1614996) | Cod sursa (job #1824203) | Cod sursa (job #259284) | Cod sursa (job #2198711)
#include <bits/stdc++.h>
using namespace std;
int v[5010],d[5010],maxx[5010];
vector<int> v1;
int main()
{
freopen("secv.in","r",stdin);
freopen("secv.out","w",stdout);
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++) {scanf("%d",&v[i]);v1.push_back(v[i]);}
sort(v1.begin(),v1.end());
v1.erase(unique(v1.begin(),v1.end()), v1.end());
int lmax=v1.size();
for(int i=1;i<=n;i++) v[i]=lower_bound(v1.begin(),v1.end(),v[i])-v1.begin()+1;
for(int i=1;i<=n;i++)
{
if(v[i]==1) d[i]=i;
else d[i]=maxx[v[i]-1];
maxx[v[i]]=max(d[i],maxx[v[i]]);
}
int sol=1e9;
for(int i=1;i<=n;i++)
if(v[i]==lmax && d[i]>0) sol=min(sol,i-d[i]+1);
if(sol==1e9) printf("-1");
else printf("%d",sol);
return 0;
}