Cod sursa(job #2498742)

Utilizator victorzarzuZarzu Victor victorzarzu Data 24 noiembrie 2019 12:35:19
Problema Subsir crescator maximal Scor 35
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <bits/stdc++.h>

using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int n,maxim,pozmax;
int a[100001],l[100001],poz[100001];

bool afisare(int nod)
{
    if(poz[nod] == 0)
    {
        g<<a[nod]<<" ";
        return true;
    }
    else
    {
        afisare(poz[nod]);
        g<<a[nod]<<" ";
    }
    return true;
}

int main()
{
    f>>n;
    for(int i=0;i<n;++i)
        f>>a[i];
    l[0] = 1;
    poz[0] = 0;
    for(int i=1;i<n;++i)
    {
        maxim = 0;
        for(int j=0;j<i;++j)
            if(a[i]>a[j] && maxim<l[j])
            {
                maxim = l[j];
                pozmax = j;
            }
        l[i] = maxim + 1;
        poz[i] = pozmax;
    }
    maxim = 0;
    for(int i=0;i<n;++i)
        if(maxim<l[i])
        {
            maxim = l[i];
            pozmax = i;
        }
    g<<maxim<<'\n';
    afisare(pozmax);
    return 0;
}