Cod sursa(job #3184375)

Utilizator andu9andu nita andu9 Data 15 decembrie 2023 17:48:48
Problema Subsir crescator maximal Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.84 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> len(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] && len[i] < len[j] + 1)
                len[i] = len[j] + 1, index[i] = j;


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


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

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