Cod sursa(job #1667864)

Utilizator JavaAlexDinu Alexandru JavaAlex Data 29 martie 2016 12:12:06
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <iostream>
#include <fstream>

using namespace std;


ifstream f("subsiruri.in");
ofstream s("subsiruri.out");

const int N = 100001;

int v[N] ,lung[N], pred[N];

void sir(int p){
    if(pred[p] != -1)
        sir(pred[p]);
    s<<v[p]<<" ";

}
int main()
{
    int n,i,j,lmax,tmax=0;
    f>>n;
    for(i=0; i<n; i++)
        f>>v[i];
    lung[0] = 1;
    pred[0] = -1;
    for(i=1; i<n; i++)
    {
        lmax = 0;
        pred[i] = -1;
        for(j=i-1; j>=0; j--)
            if (v[j] < v[i])
                if (lung[j] > lmax)
                {
                    lmax = lung[j];
                    pred[i] = j;
                }

        lung[i] = 1 + lmax;
        if(lung[i]>lung[tmax])
            tmax = i;
    }
    s<<v[tmax]<<"\n";
    sir(tmax);
    return 0;
}