Cod sursa(job #2198711)

Utilizator stelian2000Stelian Chichirim stelian2000 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;
}