Cod sursa(job #2648351)

Utilizator George_CristianGeorge Dan-Cristian George_Cristian Data 10 septembrie 2020 12:54:43
Problema Subsir crescator maximal Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int n, a[100005], L[100005], maxgen;

void citire() {
    f >> n;
    for (int i = 1; i <= n; ++i)
        f >> a[i];
}

void parcurgere() {
    for (int i = 1; i <= n; ++i) {
        int maxi = 0;
        for (int j = 0; j < i; ++j)
            if (a[j] < a[i])
                maxi = max(maxi, L[j]);
        L[i] = 1 + maxi;
        maxgen = max(maxgen, L[i]);
    }
}

void afisare(int nr, int poz) {
    if (nr == 0)
        return;
    for (int i = poz;; i--)
        if (L[i] == nr) {
            afisare(nr - 1, i - 1);
            g << a[i] << ' ';
            return;
        }
}

int main() {
    citire();
    parcurgere();
    g << maxgen << '\n';
    afisare(maxgen, n);
    return 0;
}