Cod sursa(job #1214322)

Utilizator mirceadinoMircea Popoveniuc mirceadino Data 30 iulie 2014 02:14:20
Problema Subsir crescator maximal Scor 65
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include<cstdio>
#include<algorithm>
#include<set>

using namespace std;

const int NMAX = 100000+5;
const int INF = (1LL<<31)-1;

void Read(),Solve(),Print();

int N,Best;
int V[NMAX];
multiset<int> LIS;
multiset<int>::iterator it;

int main()
{
    Read();
    Solve();
    Print();

    return 0;
}

void Read()
{
    int i;

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

    scanf("%d",&N);

    for(i = 1; i <= N; i++)
        scanf("%d",&V[i]);
}

void Solve()
{
    int i;

    for(i = 1; i <= N; i++)
    {
        LIS.insert(V[i]);
        it = LIS.lower_bound(V[i]);
        it++;
        if(it != LIS.end()) LIS.erase(it);
    }
}

void Print()
{
    printf("%d\n",LIS.size());

    for(it = LIS.begin(); it != LIS.end(); it++)
        printf("%d ",*it);
}