Cod sursa(job #1863643)

Utilizator KanghuAndre Popescu Kanghu Data 31 ianuarie 2017 07:58:50
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include <iostream>
#include <fstream>

using namespace std;

int V[100010];
int D[100010];
int P[100010];
int L[100010];
int mx;
int poz;

int main()
{
    ifstream i("scmax.in");
    ofstream o("scmax.out");

    int N;

    i >> N;

    for(int a = 0; a < N; a++)
    {
        i >> V[a];
        D[a] = 1;
        P[a] = -1;
    }

    for(int a = 0; a < N; a++)
    {
        for(int b = a - 1; b >= 0; b--)
        {
            if(V[b] < V[a])
            {
                if(D[b] + 1 > D[a])
                {
                    D[a] = D[b] + 1;
                    P[a] = b;

                    if(D[a] > mx)
                    {
                        mx = D[a];
                        poz = a;
                    }
                }
            }
        }
    }

    o << mx << '\n';
    int k = 0;

    while(poz != -1)
    {
        L[k] = V[poz];
        poz = P[poz];
        k++;
    }

    for(int a = k - 1; a >= 0; a--)
    {
        o << L[a] << " ";
    }

    return 0;
}