Cod sursa(job #2819470)

Utilizator flaviaelenaflavia tufan flaviaelena Data 18 decembrie 2021 13:33:01
Problema Secv Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <fstream>
#include <algorithm>

using namespace std;
ifstream fin("secv.in");
ofstream fout("secv.out");
const int nmax=5000;
struct norm{
    int val,poz;
};
int v[nmax+5],d[nmax+5];
norm a[nmax+5];
int cmp(norm p,norm q){
    return p.val<q.val;
}
int main()
{
    int n,i,x,mi=-1,l;
    fin>>n;
    for(i=1;i<=n;++i){
        fin>>v[i];
        a[i].val=v[i];
        a[i].poz=i;
    }
    sort(a+1,a+n+1,cmp);
    x=1;
    v[a[1].poz]=x;
    for(i=2;i<=n;++i){
        if(a[i-1].val!=a[i].val){
            ++x;
        }
        v[a[i].poz]=x;
    }
    for(i=1;i<=n;++i){
        if(v[i]==1){
            d[1]=i;
        } else {
            d[v[i]]=d[v[i]-1];
        }
        if(v[i]==x && d[x]!=0){
            l=i-d[x]+1;
            if(l<mi || mi==-1){
                mi=l;
            }
        }
    }
    fout<<mi;

    return 0;
}