Cod sursa(job #2401848)

Utilizator ptudortudor P ptudor Data 10 aprilie 2019 09:41:33
Problema Secv Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <bits/stdc++.h>
using namespace std;
ifstream in("secv.in");
ofstream out("secv.out");
int n,a[5005],copie[5005],dp[5005];
unordered_map <int,int> m;
int main()
{int i,j,k,fin=1000000000;
    in>>n;
    for (i=1;i<=n;i++){
        in>>a[i];
        copie[i]=a[i];
    }
    copie[0]=-1,k=1;
    sort(copie+1,copie+1+n);
    for (i=1;i<=n;i++)
        if (copie[i]!=copie[i-1])
            m[copie[i]]=k++;
    k--;
    for (i=1;i<=n;i++)
        a[i]=m[a[i]];
    for (i=1;i<=n;i++)
    {
        if (a[i]==1){dp[1]=i;continue;}
        if (dp[a[i]-1]==0)continue;

        dp[a[i]]=dp[a[i]-1];
        if (a[i]==k)
            fin=min(fin,i-dp[k]+1);
    }
    if (fin==1000000000)
        out<<"0\n";
    else
        out<<fin<<"\n";
    out.close();
    in.close();
    return 0;
}