Cod sursa(job #2493080)

Utilizator SurduTonySurdu Tony SurduTony Data 15 noiembrie 2019 22:03:04
Problema Subsir crescator maximal Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include <iostream>
#include <fstream>
using namespace std;

const int NMAX = 100001;

ifstream fin("scmax.in");
ofstream fout("scmax.out");
int n, v[NMAX], len[NMAX], prev[NMAX], imax;

void ReconstruireSubsir(int i) {
    if(prev[i] != -1) ReconstruireSubsir(prev[i]);
    cout << v[i] << ' ';
}

int main()
{
    // read
    fin >> n;

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

    //
    len[0] = 1;
    prev[0] = -1;

    for(int i=1; i<n; i++) {
        len[i] = 1;
        prev[i] = -1;

        for(int j=0; j<i; j++) {
            if(v[j]<v[i] && len[j]+1>len[i]) {
                len[i] = len[j]+1;
                prev[i] = j;
            }
        }
        if(len[i]>len[imax]) imax = i;
    }

    ReconstruireSubsir(imax);

    return 0;
}