Cod sursa(job #1800180)

Utilizator LazarAndreiLazar Andrei Teodor LazarAndrei Data 7 noiembrie 2016 15:09:40
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <bits/stdc++.h>
using namespace std;

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

int N, arr[100], L[100], Max;

void read_input ()
{
    in >> N ;
    for(int i = 1 ; i <= N ; ++ i)
        in >> arr[i];
}

void solve ()
{
    int poz, i , last;
    L[N] = 1;
    for(int i = N - 1 ; i >= 1 ; -- i)
    {
        Max = 0;

        for(int j = i ; j <= N ; ++ j)
        {
            if(arr[i] < arr[j] && L[j] > Max)
                Max = L[j];
        }

        L[i]= Max + 1;
    }

    Max = 0;

    for(int i = 1 ; i <= N ; ++ i)
    {
        if(L[i] > Max)
            Max = L[i], poz = i;
    }

    out << Max << endl;
    out << arr[poz] <<" " ;
    -- Max;
    last = poz;
    for(i = poz + 1 ; i <= N ; ++ i)
    {
        if(L[i] == Max && last < arr[i])
            out << arr[i] << " " , last = arr[i], -- Max;


    }
}

int main()
{
    read_input ();
    solve ();
    return 0;
}