Cod sursa(job #1197468)

Utilizator cojocariustefancojocariu cojocariustefan Data 12 iunie 2014 09:11:30
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <fstream>
#include <iostream>

using namespace std;

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

int b[100000];
bool ok[100000];

void best( int a[], int n, int &x)
{
    int i, j, max;
    for(i=1;i<=n;i++)
    {
        max=0;
        for( j=i-1; j>=1; j--)
            if(b[j] > max and a[j] < a[i])
                max = b[j];
        b[i] = max+1;
        if(max+1 > x)
            x = max+1;
    }
}

void ver(int a[], int x)
{
    int i=1,j;
    while(b[i] < x)
        i++;
    j = i;
    for( ; x!=0; j--)
    {
        if(b[j] == x )
        {
            ok[j] = 1;
            x = x-1;
        }
    }
}

int main()
{
    int n, a[100000], i, x=0;
    f >> n;
    for( i=1; i<=n; i++)
        f >> a[i];
    best(a, n, x);
    g << x << "\n";
    ver(a, x);
    for( i=1; i<=n; i++)
        if(ok[i] == 1)
            g << a[i] << " ";
}