Cod sursa(job #2466376)

Utilizator GeoeyMexicanuBadita George GeoeyMexicanu Data 1 octombrie 2019 23:08:29
Problema Secv Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.06 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]);
        if(min1>a[i])
            min1 = a[i];
        if(max1<a[i])
            max1 = a[i];
    }
    int numD = h.size();
    if(numD == 1){
        g<<1;
        return 0;
    }
    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(max1 == a[i] && d[i] == numD - 1){
                int t = i;
                int nr = 0;
                int prc = d[i];
                while(a[t] != min1 || prc != 0){
                    t--;
                    if(d[t] == prc - 1)
                        prc = d[t];
                    nr++;
                }
                g<<nr + 1;
                return 0;
        }
    }
    g<<-1;
}