Cod sursa(job #3208254)

Utilizator SilviuC25Silviu Chisalita SilviuC25 Data 28 februarie 2024 09:48:05
Problema Subsir crescator maximal Scor 70
Compilator cpp-64 Status done
Runda 28_februarie_simulare_oji_2024_clasele_11_12 Marime 0.9 kb
#include <bits/stdc++.h>
using namespace std;

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

int main() {
    int n;
    fin >> n;
    vector<int> arr(n);
    for (int i = 0; i < n; ++i) {
        fin >> arr[i];
    }
    vector<int> L(n, 1);
    for (int i = 1; i < n; ++i) {
        for (int j = 0; j < i; ++j) {
            if (arr[i] > arr[j] && L[i] < L[j] + 1) {
                L[i] = L[j] + 1;
            }
        }
    }
    int Lmax = 0;
    for (int i = 0; i < n; ++i) {
        if (L[i] > Lmax) {
            Lmax = L[i];
        }
    }
    fout << Lmax << "\n";
    vector<int> subsequence;
    for (int i = n - 1; i >= 0; --i) {
        if (L[i] == Lmax) {
            subsequence.push_back(arr[i]);
            Lmax--;
        }
    }
    for (int i = subsequence.size() - 1; i >= 0; --i) {
        fout << subsequence[i] << " ";
    }
    return 0;
}