Cod sursa(job #2153529)

Utilizator MarianConstantinMarian Constantin MarianConstantin Data 6 martie 2018 11:54:26
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <iostream>
#include <fstream>

using namespace std;

int a[100010], t[100010], l[100010], af[100010];

int main()
{
    int n, x=0, maxim, pozmax;
    ifstream fin("scmax.in");
    ofstream fout("scmax.out");
    fin >> n;
    for (int i=1; i<=n; i++)
        fin >> a[i];
    l[++x]=1;
    for (int i=2; i<=n; i++)
    {
        maxim=0;
        pozmax=0;
        for (int j=1; j<i; j++)
        {
            if (a[j]<a[i] && l[j]>maxim)
            {
                maxim=l[j];
                pozmax=j;
            }
            l[i]=maxim+1;
            t[i]=pozmax;
        }
    }
    maxim=0;
    for (int i=1; i<=n; i++)
        if (l[maxim]<l[i])
            maxim=i;
    af[1]=a[maxim];
    pozmax=maxim;
    for (int i=2; i<=l[maxim]; i++)
    {
        af[i]=a[t[pozmax]];
        pozmax=t[pozmax];
    }
    fout << l[maxim] << "\n";
    for (int i=l[maxim]; i>=1; i--)
        fout << af[i] << " ";
    return 0;
}