Cod sursa(job #2466389)

Utilizator GeoeyMexicanuBadita George GeoeyMexicanu Data 1 octombrie 2019 23:29:51
Problema Secv Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <iostream>
#include <fstream>
#include <set>

using namespace std;

int d[5010],a[5010],i,j,n,m,min1,max1;
set<int> h;
ifstream f("secv.in");
ofstream g("secv.out");

int main()
{
    min1 = 2000000010;
    max1 = -1;
    f>>n;
    for(i=1;i<=n;i++){
        f>>a[i];
        h.insert(a[i]);
    }
    int numD = h.size();
    if(numD == 1){
        g<<1;
        return 0;
    }
    auto it = h.end();
    int minNr = 2000000010;
    for(i=1;i<=n;i++){
        for(j=i-1;j>=1;j--){
            if(a[i]>a[j]){
                d[i] = max(d[i],d[j]+1);
            }
        }
        if(d[i] == numD - 1){
                int t = i;
                int nr = 0;
                int prc = d[i];
                it--;
                it--;
                while(prc != 0){
                    t--;
                    if(d[t] == prc - 1 && a[t] == *it){
                        prc--;
                        it--;
                    }
                    nr++;
                }
                if(minNr > nr)
                    minNr = nr;
        }
    }
    if(minNr == 2000000010)
        g<<-1;
    else
        g<<minNr+1;
}