Cod sursa(job #1582611)

Utilizator tudorgalatanRoman Tudor tudorgalatan Data 28 ianuarie 2016 10:04:25
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include <iostream>
#include <fstream>
#define MAX 100001

using namespace std;

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

int N, v[MAX], rezultate[MAX], last[MAX];


int rez, poz;
int i, j;
int sol[10000], rez2;
int main()
{
    fin >> N;
    for (i = 1; i <= N; i++)
        fin >> v[i];
    for (i = 1; i <= N; i++)
    {
        rezultate[i] = 1;
        last[i] = 0;
        for (j = 1; j < i; j++)
            if (v[j] < v[i])
                if (rezultate[i] < rezultate[j] + 1)
                {
                    rezultate[i] = rezultate[j] + 1;
                    last[i] = j;
                }
    }
    for (i = 1; i <= N; i++)
        if (rezultate[i] > rez)
        {
            rez = rezultate[i];
            poz = i;
        }
    fout << rez << "\n";
    rez2 = rez;
    while (poz != 0)
    {
        sol[rez2] = v[poz];
        poz = last[poz];
        rez2 = rez2 - 1;
    }
    for ( i = 1; i <= rez; i++)
        fout << sol[i] << " ";
    return 0;
}