Cod sursa(job #1893066)

Utilizator EzrealHorodinca Mihai Ezreal Data 25 februarie 2017 14:27:31
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 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;

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

int main()
{
    f >> n;
    for (int i=1; i<=n; i++)
        f >> v[i];
    for (int i=n; i>=1; i--)
        calcul (i);
    int m=0, p=0, mi=0;
    for (int i=1; i<=n; i++)
        if (m < best[i])
        {
            m = best[i];
            p = poz[i];
            mi = i;
        }
    g << m <<'\n';
    g << v[mi] << ' ';
    while (p != 0)
    {
        g << v[p] << ' ';
        p = poz[p];
    }
    return 0;
}