Cod sursa(job #929794)

Utilizator Theodor1000Cristea Theodor Stefan Theodor1000 Data 27 martie 2013 11:46:01
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <cstdio>
#include <algorithm>

#define rd scanf
#define wr printf

using namespace std;

int a[100010], v[100010], b[100010];

int main()
{
    freopen ("scmax.in", "r", stdin);
    freopen ("scmax.out", "w", stdout);

    int n;
    rd ("%d", &n);

    int maxsc = 0, poz = 0;
    for (int i = 1, j, m; i <= n; i++)
    {
        rd ("%d", &v[i]);
        for (j = i - 1, m = 0; j >= 0; j--)
            if (v[j] < v[i])
            {
                if (m < a[j]) {m = a[j]; b[i] = j;}
            }

        a[i] = m + 1;
        if (m + 1 > maxsc) {maxsc = m + 1; poz = i;}
    }

    wr ("%d\n", maxsc);

    int k = 0;
    for (int i = poz; i; i = b[i])
        a[++k] = v[i];

    for (int i = k; i; i--)
        wr ("%d ", a[i]);

    wr ("\n");

    return 0;
}