Cod sursa(job #2059097)

Utilizator RaresEGaySopterean Adrian RaresEGay Data 6 noiembrie 2017 17:28:19
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>
#include <iostream>

#define maxn 100005

using namespace std;

ifstream f("scmax.in");
ofstream g("scmax.out");

int n, v[maxn], c[maxn], prec[maxn], best = -1, poz;

int main(){
    f >> n;
    for(int i = 1; i <= n; ++i) f >> v[i];
    for(int i = 1; i <= n; ++i){
        for(int j = i + 1; j <= n; ++j){
            if(v[j] > v[i] && c[j] < c[i] + 1){
                c[j] = c[i] + 1;
                prec[j] = i;
            }
            if(c[j] > best){
                poz = j;
                best = c[j];
            }
        }
    }
    ++best;
    g << best << '\n';
    int k = best;
    c[best] = poz;
    while(poz){
        poz = prec[poz];
        c[--best] = poz;
    }
    for(int i = 1; i <= k; ++i){
        g << v[c[i]] << ' ';
    }
}