Cod sursa(job #2133574)

Utilizator BurlacuMateiBurlacu Matei BurlacuMatei Data 17 februarie 2018 10:17:15
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <fstream>
#define MAX 100000
using namespace std;
ifstream fin("LIS.in");
ofstream fout("LIS.out");

int a[MAX];
int lgmax[MAX];
int urm[MAX];
int n;
int maxim, urmator, pozmax;
int ok;

int main()
{int i, j;
    fin>>n;
    for(i=0;i<n;i++) fin>>a[i];

    lgmax[n-1]=1; urm[n-1]=-1; //cel mai mic sufix

    for(i=n-2; i>=0; i--)
    {
        maxim=1; urmator=-1;

        for(j=i+1;j<n;j++)
            if(a[i]<a[j] && 1+lgmax[j]>maxim)
            {
                maxim=1+lgmax[j];
                urmator=j;
            }

        lgmax[i]=maxim;
        urm[i]=urmator;
    }

    //afisare
    maxim=-1;

    for(i=0;i<n;i++)
        if(lgmax[i]>maxim)
            {maxim=lgmax[i];
            pozmax=i;}

    fout<<maxim<<'\n';
    ok=1;

    for(i=pozmax; ok; i=urm[i])
    {
        fout<<a[i]<<' ';
        if(urm[i]==-1) ok=0;
    }
    return 0;
}