Cod sursa(job #2603742)

Utilizator matthriscuMatt . matthriscu Data 20 aprilie 2020 19:10:40
Problema Subsir crescator maximal Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.73 kb
#include <cstdio>
using namespace std;

int main() {
    int n, i, j, mv = 0, mi = 0,
    v[100005], rez[100005] {}, pred[100005];
    freopen("scmax.in", "r", stdin);
    freopen("scmax.out", "w", stdout);
    scanf("%d", &n);
    for(i = 1; i <= n; ++i)
        scanf("%d", &v[i]);

    for(i = 1; i <= n; i++) {
        for(j = 1; j < i; j++)
            if(v[j] < v[i] && rez[i] < 1 + rez[j]) {
                rez[i] = 1 + rez[j];
                pred[i] = j;
            }
        if(rez[i] > mv) {
            mv = rez[i];
            mi = i;
        }
    }

    for(n = 0; mi; mi = pred[mi])
        rez[++n] = v[mi];

    printf("%d\n", n);
    for(i = n; i >= 1; --i)
        printf("%d ", rez[i]);
}