Cod sursa(job #2769819)

Utilizator Raresr14Rosca Rares Raresr14 Data 17 august 2021 21:11:35
Problema Secv Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <bits/stdc++.h>
#define X first
#define poz second
using namespace std;
ifstream fin("secv.in");
ofstream fout("secv.out");
int n,i,f[5010],w[5010],nr,D[5010],minim,poz1,j,sol=6000;
pair<int,int> v[5010];
int main(){
   fin>>n;
   for(i=1;i<=n;i++){
        fin>>v[i].X;
        w[i]=v[i].X;
        v[i].poz=i;
   }
   sort(v+1,v+n+1);
   v[0].X=-1;
   for(i=1;i<=n;i++){
        if(v[i].X!=v[i-1].X)
            nr++;
        f[v[i].poz]=nr;
    }
    for(i=1;i<=n;i++)
        if(f[i]==1)
            break;
    D[i]=i;
    i++;
    for(;i<=n;i++)
        if(f[i]==1)
            D[i]=i;
        else{
            minim=6000;
            for(j=1;j<i;j++)
                if(f[j]==f[i]-1&&D[j]&&i-D[j]+1<minim){
                    minim=i-D[j]+1;
                    poz1=D[j];
                }
            if(minim!=6000)
                D[i]=poz1;
        }
    for(i=1;i<=n;i++)
        if(f[i]==nr&&D[i])
            sol=min(sol,i-D[i]+1);
    if(sol==6000)
        fout<<-1;
    else
        fout<<sol;
    return 0;
}