Cod sursa(job #2210214)

Utilizator HumikoPostu Alexandru Humiko Data 5 iunie 2018 21:42:46
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include <bits/stdc++.h>
#define lim 100005

using namespace std;

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

int n, pos, k, maxim;
int v[lim], dp[lim], p[lim], solve[lim];

int main()
{
    maxim = 1;
    k = 1;
    fin>>n;
    for( int i = 1; i <= n; ++i )
    {
        fin>>v[i];
        dp[i] = 1;
    }
    for ( int i = 1; i <= n; ++i )
    {
        for ( int j = 1; j <= i; ++j )
        {
            if( v[i] > v[j] )
            {
                if ( dp[i] < dp[j]+1 )
                {
                    dp[i] = dp[j]+1;
                    p[i] = j;
                }
                k++;
            }
        }
    }
    for ( int i = 1; i <= n; ++i )
    {
        if ( maxim <= dp[i] )
        {
            maxim = dp[i];
            pos = i;
        }
    }
    fout<<maxim<<'\n';
    for ( int i = maxim; i > 0; --i )
    {
        solve[i] = v[pos];
        pos = p[pos];
    }
    for( int i = 1; i <= maxim; i++ )
        fout<<solve[i]<<' ';

}