Cod sursa(job #2261311)

Utilizator vlad6001Pintilie Vlad vlad6001 Data 16 octombrie 2018 10:19:46
Problema Subsir crescator maximal Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.81 kb
#include <fstream>
using namespace std;

ifstream cin("scmax.in");
ofstream cout("scmax.out");

long long nr, v[100004], d[100004], last[100004];
long long poz, maxim;

void afis(long long nr)
{
    if(nr == 0)
    return;
    afis(last[nr]);
    cout << v[nr] << ' ';
}

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

    for(int i=1; i <= nr; i++)
    {
        d[i] = 1;
        for(int j=i-1; j > 0; j--)
        {
            if(v[j] < v[i] && d[j]+1 > d[i])
            {
                d[i] = d[j]+1;
                last[i] = j;
            }
        }
    }
    for(int i=nr; i > 0; i--)
    {
        if(maxim < d[i])
        {
            maxim = d[i];
            poz = i;
        }
    }

    cout << d[poz] << '\n';
    afis(poz);
}