Cod sursa(job #1029207)

Utilizator YoChinezuWeng Mihai Alexandru YoChinezu Data 15 noiembrie 2013 09:50:56
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <cstdio>
#include <vector>
#include <algorithm>

using namespace std;

vector <int> p,q,sol;
vector <int> ::iterator it;

int main(){
    freopen("scmax.in","r",stdin);
    freopen("scmax.out","w",stdout);
    int n;
    int v[100];
    scanf("%d",&n);
    for(int i=0;i<n;i++){
        scanf("%d",&v[i]);
    }
    q.push_back(v[0]);
    p.push_back(0);
    for(int i=1;i<n;i++){
        int poz;
        it=lower_bound(q.begin(),q.end(),v[i]);
        poz=(int)(it-q.begin());
        if(it==q.end()){
            q.push_back(v[i]);
        }else{
            *it=v[i];
        }
        p.push_back(poz);
    }
    int lmax,m;
    lmax=q.size();
    printf("%d\n",lmax);
    m=p.size();
    m--;
    lmax--;
    for(int i=m;i>=0;i--){
        if(lmax==p[i]){
            sol.push_back(v[i]);
            lmax--;
        }
    }
    reverse(sol.begin(),sol.end());
    m=sol.size();
    for(int i=0;i<m;i++){
        printf("%d ",sol[i]);
    }
    return 0;
}