Cod sursa(job #2694316)

Utilizator 2016Teo@Balan 2016 Data 8 ianuarie 2021 19:09:41
Problema Subsir crescator maximal Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb
///O(n^2)
#include <bits/stdc++.h>
using namespace std;
#define x1 "scmax.in"
#define x2 "scmax.out"
ifstream in(x1);
ofstream out(x2);
#define NMAX 100000
int dp[NMAX], v[NMAX], ans[NMAX];
int main() {
    int n, i, j, maxi = 0, poz = 0, cm;
    in >> n;
    for(i = 0; i < n; i++)
        in >> v[i];
    for(i = 0; i < n; i++) {
        dp[i] = 1;
        for(j = 0; j < i; j++)
            if(v[j] < v[i])
                dp[i] = max(dp[i], dp[j] + 1);
        if(dp[i] > maxi) {
            maxi = dp[i];
            poz = i;
        }
    }
    out << maxi << "\n";
    cm = maxi;
    for(i = poz; i >= 0 && maxi; i--)
        if (dp[i] == maxi) {
            ans[maxi--] = v[i];
        }
    for(i = 1; i <= cm; ++i) {
        out << ans[i] << ' ';
    }
}