Cod sursa(job #2321860)

Utilizator stefaannaStefana Mitrea stefaanna Data 16 ianuarie 2019 18:37:11
Problema Subsir crescator maximal Scor 65
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 kb
#include <iostream>
#include <fstream>

using namespace std;

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

    int n;
    fin >> n;
    int v[n];
    for (int i=0; i<n; i++)
        fin >> v[i];

    int tata[n] = {0}, d[n] = {0};
    d[0] = 1; //primul e ok
    int maxim;
    for (int i=1; i<n; i++) {
        maxim = 1;
        for (int j=i-1; j>=0; j--) {
            if (maxim < d[j]+1 && v[j] < v[i]) {
                maxim = d[j] + 1;
                tata[i] = j;
            }
        }
        d[i] = maxim;
    }
    //cout << maxim << '\n';
    maxim = d[0]; int pmax = 0;
    for (int i=0; i<n; i++) {
        if (d[i] > maxim) {
            maxim = d[i];
            pmax = i;
        }
    }

    int sol[n] = {0}, k = 0;
    fout << maxim << '\n';
    while (tata[pmax]) {
        sol[k++] = v[pmax];
        pmax = tata[pmax];
    }
    sol[k++] = v[pmax];
    for (int i=k-1; i>=0; i--)
        fout << sol[i] << ' ';
    return 0;
}