Cod sursa(job #1309429)

Utilizator avladVlad Anca avlad Data 5 ianuarie 2015 19:03:18
Problema Subsir crescator maximal Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <fstream>

using namespace std;
ifstream in ("scmax.in");
ofstream out ("scmax.out");

const int vect = 100001;
int n,v[vect];
int lung[vect];
int pred[vect];
int lungm[vect];

void refac (int i)
{
    if (i==0) return;
    refac(pred[i]);
    out << v[i] << " ";
}

int main()
{
    int lmax;
    in >> n;
    for (int i=1; i<=n; i++)
    {
        in >> v[i];
    }
    for (int i=2; i<=n; i++)
    {
        int lmax=0;
        for (int j=1; j<i; j++)
            if (v[j]<v[i])
                if (lung[j]>lmax)
                {
                    lmax=lung[j];
                    pred[i]=j;
                }
        lung[i]=1+lmax;

    }
    int pmax = 1;
    for(int i = 2; i <= n; i++)
        if (lung[i] > lung[pmax])
            pmax = i;
    out << lung[pmax] << "\n";

    refac(pmax);
    return 0;
}