Cod sursa(job #1521496)

Utilizator andrei_bB. Andrei andrei_b Data 10 noiembrie 2015 16:10:42
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <fstream>

using namespace std;

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

int n,v[100005],s[100005],p[100005];

void afisare( int maxim , int poz ){

    if ( maxim==0 )
        return;
    afisare(maxim-1,p[poz]);
    fout<<v[poz]<<' ';

    return;
}

void subsir( int &maxim , int &poz ){

    s[1]=1;
    for ( int i=2 ; i<=n ; i++ ){
        maxim=0;
        for ( int j=1 ; j<=i ; j++ ){
            if ( v[i]>v[j] && s[j]>maxim ){
                maxim=s[j];
                p[i]=j;
            }
        }
        s[i]=1+maxim;
    }
    maxim=0;
    for ( int i=1 ; i<=n ; i++ )
        if ( s[i] > maxim ){
            maxim=s[i];
            poz=i;
        }
}

int main()
{
    int maxim,poz;
    fin>>n;
    for ( int i=1 ; i<=n ; i++ )
        fin>>v[i];
    subsir(maxim,poz);
    fout<<maxim<<'\n';
    afisare(maxim,poz);
}