Cod sursa(job #1043579)

Utilizator alex.glontGlontaru Alexandru alex.glont Data 28 noiembrie 2013 19:27:06
Problema Subsir crescator maximal Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include<fstream>
#include<iostream>
using namespace std;

fstream in ( "scmax.in" , ios::in ),
        out( "scmax.out", ios::out);

int nr[100001], l[100001], back[100001], imax, n, lmax, maxim;

void complete(){

    int i, j, x=0;

    for( i=2; i<=n; i++ ){

        maxim =-1;

        for( j=1; j<i; j++){

            if( l[j]>maxim && nr[j]<nr[i] ){

                maxim=l[j];
                x=j;
            }
        }

        if(maxim == -1){

            maxim = 0;
        }

        l[i] = maxim+1;
        back[i] = x;

    }
}

void afis(int i){

    if( back[i] ){
        afis( back[i] );
    }
    out << nr[i] <<' ';
}



int main(){

    in >> n;

    for(int i=1; i<=n; i++){

        in >> nr[i];
    }

    l[1] = 1;
    complete();

    maxim = -1;

    for(int i=1; i<=n; i++){

        if( maxim < l[i] ){

            maxim = l[i];
            imax = i;
        }
    }

    out << maxim << '\n';

    afis( imax );

    out <<'\n';

    return 0;
}