Cod sursa(job #739399)

Utilizator test0Victor test0 Data 22 aprilie 2012 23:01:31
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <cstdio>
#include <vector>
#include <algorithm>
#define MAX 100001
using namespace std;
vector<int>Q;
vector<int>::iterator it;
int n,k,V[MAX],BST[MAX];

int main(){
    freopen("scmax.in","r",stdin);
    freopen("scmax.out","w",stdout);
        scanf("%d",&n);
        for(int i=0;i<n;i++)scanf("%d",&V[i]);
    for(int i=0;i<n;i++){
        it=lower_bound(Q.begin(),Q.end(),V[i]);
        if(it==Q.end()){
            Q.push_back(V[i]);
            BST[i]=Q.size(); } else {
            *it=V[i];
            BST[i]=it-Q.begin()+1; }
    }
    k=Q.size();
    Q.clear();
    for(int i=n-1;i>=0;i--)
    if(BST[i]==k)Q.push_back(V[i]),k--;
        printf("%d\n",Q.size());
        for(int i=Q.size()-1;i>=0;i--)printf("%d ",Q[i]);
}