Cod sursa(job #1893082)

Utilizator EzrealHorodinca Mihai Ezreal Data 25 februarie 2017 14:34:40
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int v[100005], best[100005], poz[100005];
int n, mm, pi, mi;

void calcul (int i)
{
    int m=0, p=0;
    for (int j=i+1; j<=n; j++)
        if (v[j] > v[i] && m < best[j])
        {
            m = best[j];
            p = j;
        }
    best[i] = m+1;
    poz[i] = p;
    if (mm < best[i])
    {
        mm = best[i];
        pi = poz[i];
        mi = i;
    }
}

int main()
{
    f >> n;
    for (int i=1; i<=n; i++)
        f >> v[i];

    for (int i=n; i>=1; i--)
        calcul (i);

    g << mm <<'\n';
    g << v[mi] << ' ';
    while (pi != 0)
    {
        g << v[pi] << ' ';
        pi = poz[pi];
    }
    return 0;
}