Cod sursa(job #1785995)

Utilizator OvidelwHolca Ovidiu Ovidelw Data 22 octombrie 2016 11:00:30
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <fstream>

using namespace std;

int a[100003], n, l[100003], lmax;

int main()
{
    freopen ("scmax.in", "r", stdin);
    freopen ("scmax.out", "w", stdout);
    scanf ("%d\n", &n);
    for (int i = 0; i < n; i++)
        scanf ("%d", &a[i]);
    scanf ("%d", &a[n - 1]);
    for (int i = n - 1; i >= 0; i--)
    {
        int maxi = 0;
        for (int j = i + 1; j < n; j++)
            if (a[j] > a[i])
                maxi = max (maxi, l[j]);
        l[i] = 1 + maxi;
        lmax = max (lmax, l[i]);
    }
    printf ("%d\n", lmax);
    for (int i = 0; i < n; i++)
        if (lmax == l[i])
        {
            printf ("%d ", a[i]);
            lmax--;
        }
    return 0;
}