Cod sursa(job #3345412)

Utilizator banilasefRiciu Andrei Cristian banilasef Data 9 martie 2026 15:37:54
Problema Subsir crescator maximal Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.98 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int main() {
    ifstream in;
    ofstream out;
    in.open("scmax.in");
    out.open("scmax.out");
    vector<int> v;
    int n;
    in >> n;
    // cout<<n<<"\n";
    for (int i = 0; i < n; i++) {
        int x;
        in >> x;
        v.push_back(x);
    }
    vector<int> dp(n, 0);
    vector<int> prev(n, 0);
    dp[0] = 1;
    prev[0] = -1;
    int max_idx = 0;
    for (int i = 1; i < n; i++) {
        int maxi = 0;
        prev[i]  = -1;
        for (int j = 0; j < i; j++) {
            if (v[j] < v[i] && dp[j] > maxi)
                maxi = dp[j], prev[i] = j;
        }
        dp[i] = 1 + maxi;
        if(dp[i]>dp[max_idx])max_idx=i;
    }
    out << dp[max_idx] << "\n";
    vector<int> res(n, 0);
    // res[n - 1] = prev[n - 1];
    for (int i = max_idx; i >= 0; i = prev[i]) {
        res[i] = v[i];
    }
    for (int i = 0; i < n; i++) {
        if (res[i])
            out << res[i] << " ";
    }
}