Cod sursa(job #3210370)

Utilizator racoltaRacolta Victor racolta Data 6 martie 2024 09:21:02
Problema Subsir crescator maximal Scor 35
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream f("scmax.in");
ofstream g("scmax.out");

const int NMAX = 100001;

int v[NMAX];
int lmax[NMAX];
int n;

int scmax(int k){
    if(lmax[k] != -1)
    {
        return lmax[k];
    }

    int best_lmax = 1;
    for(int i = k + 1; i <= n; i++)
    {
        if(v[i] > v[k])
        {
            int lmax_from_i = scmax(i);
            if(lmax_from_i + 1 > best_lmax)
            {
                best_lmax = lmax_from_i + 1;
            }
        }
    }

    lmax[k] = best_lmax;
    return lmax[k];
}

int main()
{
    f >> n;
    for(int i = 1; i <= n; i++){
        f >> v[i];
        lmax[i] = -1;
    }

    int best = 1;
    for(int i = 1; i <= n; i++){
        int lmax_for_i = scmax(i);
        if(lmax_for_i > best){
            best = lmax_for_i;
        }
    }
    g << best << "\n";



    return 0;
}