Cod sursa(job #2210783)

Utilizator radugheoRadu Mihai Gheorghe radugheo Data 7 iunie 2018 22:16:28
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <fstream>
#include <limits.h>

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

int n, i, j, k, maxim, u, poz, v[100005], t[100005], l[100005], s[100005];

int main()
{
    fin >> n;
    for (i=1; i<=n; i++){
        fin >> v[i];
    }
    n++;
    v[n] = INT_MAX;
    l[1] = 1;
    for (i=2; i<=n; i++){
        maxim = 0;
        for (j=1; j<i; j++){
            if (v[j] < v[i] && l[j] > maxim){
                maxim = l[j];
                poz = j;
            }
        }
        if (maxim != 0){
            l[i] = 1 + maxim;
            t[i] = poz;
        }
        else {
            l[i] = 1;
            t[i] = 0;
        }
    }
    u = n;
    while (u != 0){
        s[++k] = v[u];
        u = t[u];
    }
    fout << k - 1 << "\n";
    for (i=k; i>=2; i--){
        fout << s[i] << " ";
    }
    return 0;
}