Cod sursa(job #1517924)

Utilizator gerd13David Gergely gerd13 Data 4 noiembrie 2015 23:59:48
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <fstream>

using namespace std ;


const int NMAX = 1000005 ;

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

int N, V[NMAX], prim, l[NMAX], poz[NMAX], m ;

int main()
{
    fin >> N ;

    for(int i = 1 ; i <= N ; ++ i)
        fin >> V[i] ;


    m = -1 ;
    for(int i = N ; i > 0 ; i --)
    {
        poz[i] = 0 ; l[i] = 1 ;

        for(int j = i + 1 ; j <= N ; ++ j)
            if(V[i] < V[j] && l[i] < 1 + l[j])
        {
            l[i] = 1 + l[j] ;
            poz[i] = j ;
        }

        if(m < l[i])
        {
            m = l[i] ;
            prim = i ;
        }

    }


    fout << m << '\n' ;
    for(int i = prim ; i>0 ; i = poz[i])
        fout << V[i] << ' ' ;
    fout << '\n' ;

    fin.close() ;
    fout.close() ;
    return 0 ;
}