Cod sursa(job #2004372)

Utilizator LucaSeriSeritan Luca LucaSeri Data 25 iulie 2017 18:24:27
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>

using namespace std;

const int MaxN = 100002;

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

int main()
{
    int n;
    f >> n;
    int v[MaxN];
    int dp[MaxN];
    for(int i = 0; i < n; ++i){
        f >> v[i];
    }
    int best = -1;
    for(int i = 0; i < n; ++i){
        dp[i] = 1;
        for(int j = 0; j < i; ++j){
            if(v[j] < v[i]){
                dp[i] = max(dp[i], dp[j]+1);
            }
        }
        best = max(best, dp[i]);
    }

    g << best << '\n';
    int aux[MaxN];
    --n;
    int cop = best;
    while(best){
        if(dp[n] == best){
            aux[best] = v[n];
            best--;
        }
        n--;
    }

    for(int i = 1; i <= cop; ++i){
        g << aux[i] << ' ';
    }
    return 0;
}