Cod sursa(job #2918869)

Utilizator Samoila_AlexandruSamoilaAlexandru Samoila_Alexandru Data 13 august 2022 16:17:55
Problema Subsir crescator maximal Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>
#define dim 100005

using namespace std;

ifstream fin("scmax.in");
ofstream fout("scmax.out");

int n, v[dim], lg[dim], urm[dim], pmax;

void lgMax()
{
    lg[n]=1, urm[n]=-1;

    for(int i=n-1; i>=1; i--)
    {
        lg[i]=1;
        for(int j=i+1; j<=n; j++)
            if(v[i]<v[j] && lg[i]<lg[j]+1)
            lg[i]=lg[j]+1, urm[i]=j;
    }

    int p=1;

    for(int i=1; i<=n; i++)
        if(lg[i]>lg[pmax])
        pmax=i;
}

void afisare()
{
    int p=pmax;

    do
    {
        fout<<v[p]<<' ';
        p=urm[p];
    }
    while(p!=-1);
}

int main()
{
    fin>>n;
    for(int i=1; i<=n; i++)
        fin>>v[i];

    fin.close();

    lgMax();
    fout<<lg[pmax]<<'\n';
    afisare();

    fout.close();

    return 0;
}