Cod sursa(job #1347895)

Utilizator ducu97Radu Seteanu ducu97 Data 19 februarie 2015 12:37:48
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <fstream>
#define NMax 100010

using namespace std;

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

int v[NMax], t[NMax], p[NMax];

int main()
{
    int i, j, n, q, k = 0, maxim = 0;
    in >> n;
    in >> v[1];
    t[1] = 1;
    for(i = 2; i <= n; i ++)
    {
        in >> v[i];
        t[i] = 1;
        for(j = 1; j < i; j ++)
            if(v[j] < v[i])
                t[i] = max( t[i], t[j] + 1);

        if(maxim<t[i])
        {
            maxim = t[i];
            q = i;
        }
    }

    for(i = q; t[i] > 1;)
    {
        p[t[i]] = v[i];
        for(j = i - 1; j >= 1; j --)
        {
            if(t[j] == t[i] - 1 && v[j] < v[i])
            {
                i = j;
                break;
            }
        }
    }

    p[t[i]] = v[i];

    out << maxim << endl;
    for(i = 1; i <= maxim; i ++)
        out << p[i] << " ";

    return 0;
}