Cod sursa(job #2133591)

Utilizator arabtrappinTudor Bursuc arabtrappin Data 17 februarie 2018 10:21:36
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <fstream>
#define DMAX 100001
using namespace std;
ifstream fin("lis.in");
ofstream fout("lis.out");
int lgmax[DMAX],urm[DMAX],v[DMAX];
int n,maxi,urmator;
int main()
{
    int i,j,maxi,urmator,pozmax;
    fin>>n;
    for(i=0;i<=n-1;i++)
        fin>>v[i];
    lgmax[n-1]=1;
    urm[n-1]=-1;
    //cel mai mic sufix are un element
    for(i=n-2;i>=0;i--)
    {
        maxi=1;
        urmator=-1;
        for(j=i+1;j<n;j++)
            if(v[i]<v[j]&&1+lgmax[j]>maxi)
        {
            maxi=1+lgmax[j];
            urmator=j;
        }
        lgmax[i]=maxi;
        urm[i]=urmator;
    }
    maxi=lgmax[0];
    pozmax=0;
    for(i=1;i<=n-1;i++)
        if(maxi<lgmax[i])
    {
        maxi=lgmax[i];
        pozmax=i;
    }
    fout<<maxi<<"\n";
    fout<<v[pozmax]<<" ";
    while(urm[pozmax]!=-1)
    {
        pozmax=urm[pozmax];
        fout<<v[pozmax]<<" ";
    }
    return 0;
}