Cod sursa(job #2356736)

Utilizator georgeh07Horatiul Horica georgeh07 Data 26 februarie 2019 21:12:46
Problema Subsir crescator maximal Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <fstream>

using namespace std;

const int NMAX=100001;
int n;
int v[NMAX],x[NMAX],t[NMAX];

void citire () {
    ifstream in("scmax.in");
    in>>n;
    for (int i=1;i<=n;i++)
        in>>v[i];
    in.close();
}

ofstream out("scmax.out");

int construiesc () {
    int maxim=0,imaxim;
    for (int i=1;i<=n;i++) {
        for (int j=0;j<i;j++) {
            if (v[j]<v[i] && x[j]+1>x[i]){
                x[i]=x[j]+1;
                t[i]=j;
            }
        }
        if (x[i]>maxim) {
            maxim=x[i];
            imaxim=i;
        }
    }
    out<<maxim<<'\n';
    return imaxim;
}

void afisRec (int i) {
    if (t[i]!=0)
        afisRec(t[i]);
    out<<v[i]<<' ';
}

void afisare () {
    afisRec(construiesc());
}

int main()
{
    citire();
    afisare();
    return 0;
}