Cod sursa(job #3184368)

Utilizator andu9andu nita andu9 Data 15 decembrie 2023 17:37:48
Problema Subsir crescator maximal Scor 45
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <fstream>
#include <vector>

std::ifstream fin("scmax.in");
std::ofstream fout("scmax.out");

int main () {
    int n; fin >> n;
    std::vector<int> v(n);
    for (int i = 0; i < n; i += 1)
        fin >> v[i];

    std::vector<int> res(n, 1), index(n, -1);
    for (int i = 0; i < n; i += 1)
        for (int j = 0; j < i; j += 1)
            if (v[j] < v[i]) {
                index[i] = j;
                res[i] = std::max (res[i], 1 + res[j]);
            }

    int result = res[0], pos = 0;
    for (int i = 1; i < n; i += 1)
        if (res[i] > result)
            result = res[i], pos = i;

    std::vector<int> seq;
    while (pos != -1) {
        seq.emplace_back (v[pos]);
        pos = index[pos];
    }

    fout << result << '\n';
    for (int i = seq.size () - 1; i >= 0; i -= 1)
        fout << seq[i] << ' ';
    return 0;
}