Cod sursa(job #3356069)

Utilizator rapidu36Victor Manz rapidu36 Data 29 mai 2026 14:54:15
Problema Subsir crescator maximal Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include <fstream>
#include <vector>

using namespace std;

const int INF = 2e9 + 1;

ifstream in("scmax.in");
ofstream out("scmax.out");
vector <int> v;
vector <int> lung;

void refac_subsirul(int p, int l, int reper) {
    if (l == 0) {
        return;
    }
    if (v[p] < reper && lung[p] == l) {
        refac_subsirul(p - 1, l - 1, v[p]);
        out << v[p] << " ";
    } else {
        refac_subsirul(p - 1, l, reper);
    }
}

int main() {
    int n, p_max = 0;
    in >> n;
    v.resize(n);
    lung.resize(n);
    for (int i = 0; i < n; i++) {
        in >> v[i];
        int l_j_max = 0;
        for (int j = 0; j < i; j++) {
            if (v[j] < v[i]) {
                l_j_max = max(l_j_max, lung[j]);
            }
        }
        lung[i] = 1 + l_j_max;
        if (lung[i] > lung[p_max]) {
            p_max = i;
        }
    }
    in.close();
    out << lung[p_max] << "\n";
    refac_subsirul(p_max, lung[p_max], INF);
    out << "\n";
    out.close();
    return 0;
}