Cod sursa(job #1649944)

Utilizator DysKodeTurturica Razvan DysKode Data 11 martie 2016 15:51:43
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <fstream>
#include <algorithm>

using namespace std;

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

int i,j,n,m,k,sol[100010],mar[100010],p[100010],v[100010],oo=2000000010,x;

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

    for( i = 1 ; i <= n ; i++ )
    {
        x = lower_bound( p , p + i , v[ i ] ) - p;
        sol[ 0 ] = max( sol[ 0 ] , x );
        mar[ i ] = x;
        p[ x ] = min( p[ x ] , v[ i ] );
    }

    k = sol[ 0 ];
    for( i = n ; i >= 1 ; i-- )
    {
        if( mar[ i ] == k )
            sol[ k ] = v[ i ],k--;
    }
    fout<<sol[ 0 ]<<'\n';
    for( i = 1 ; i <= sol[ 0 ] ; i++ )
        fout<<sol[ i ]<<' ';

return 0;
}