Cod sursa(job #1314656)

Utilizator tatianazTatiana Zapirtan tatianaz Data 12 ianuarie 2015 09:02:13
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <fstream>
using namespace std;

ifstream is("scmax.in");
ofstream os("scmax.out");

int s[100001], l[100001], t[100001];
int n;
int mxm = -1, poz;

void Solutie(int p);

int main()
{
    is >> n;
    for ( int i = 1; i <= n; ++i )
        is >> s[i];

    for ( int i = 1; i <= n; ++i )
    {
        l[i] = 1;
        for ( int j = 1; j < i; ++j )
            if ( l[i] < l[j] + 1 && s[j] < s[i] )
            {
                l[i] = l[j] + 1;
                if ( l[i] > mxm )
                {
                    mxm = l[i];
                    poz = i;
                }

                t[i] = j;
            }
    }

    os << mxm << '\n';

    Solutie(poz);


    is.close();
    os.close();
    return 0;
}

void Solutie(int p)
{
    if ( p == 0 )
        return;
    Solutie(t[p]);
    os << s[p] << ' ';
}