Cod sursa(job #1268641)

Utilizator HotSteelBeteag Ion Andrei HotSteel Data 21 noiembrie 2014 10:55:03
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <cstdio>
#include <vector>
#include <algorithm>

using namespace std;

#define INF ((1 << 31) - 1)

int main()
{
    freopen("scmax.in", "r", stdin);
    freopen("scmax.out", "w", stdout);

    int N;
    scanf("%d", &N);

    vector < int > A(N);
    int i;
    for(i = 0 ; i < N ; ++i)
        scanf("%d", &A[i]);

    vector < int > LIS(N + 1 , INF);
    for(i = 0 ; i < N ; ++i)
        *lower_bound(LIS.begin(), LIS.end(), A[i]) = A[i];

    int Count = 0;
    for(i = 0 ; i <= N ; ++i)
        if(LIS[i] == INF)
            ++Count;

    printf("%d\n", Count);
    for(i = 0 ; i <= N ; ++i)
        if(LIS[i] != INF)
            printf("%d ", LIS[i]);

    return 0;
}