Mai intai trebuie sa te autentifici.
Cod sursa(job #2198711)
Utilizator | Data | 25 aprilie 2018 10:03:57 | |
---|---|---|---|
Problema | Secv | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.79 kb |
#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;
}