Cod sursa(job #2466368)

Utilizator GeoeyMexicanuBadita George GeoeyMexicanu Data 1 octombrie 2019 22:54:03
Problema Secv Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.12 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;
}