Cod sursa(job #2878242)

Utilizator indianu_talpa_iuteTisca Catalin indianu_talpa_iute Data 26 martie 2022 11:32:45
Problema Subsir crescator maximal Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <bits/stdc++.h>
#define MAXN 100005

using namespace std;

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

int n, arr[MAXN], dp[MAXN], id[MAXN], sz = 1, poz;
void citire() {
    fin >> n;
    for (int i = 1; i <= n; i++)
        fin >> arr[i];
}

void generare() {
    dp[n] = 1, id[n] = -1, poz = n;
    for (int i = n - 1; i >= 1; i--) {
        dp[i] = 1;
        for (int j = i + 1; j <= n; j++)
            if (arr[i] < arr[j] && dp[i] < dp[j] + 1) {
                dp[i] = dp[j] + 1;
                id[i] = j;
                if (dp[i] > sz) {
                    sz = dp[i];
                    poz = i;
                }
            }
    }
}

void rezolvare() {
    generare();
    fout << sz << '\n';
    int i = poz;
    while (i >= 0) {
        fout << arr[i] << ' ';
        i = id[i];
    }
}

int main() {
    citire();
    rezolvare();
    return 0;
}