Pagini recente » Cod sursa (job #465883) | Cod sursa (job #492375) | Cod sursa (job #2897397) | Cod sursa (job #1328333) | Cod sursa (job #739400)
Cod sursa(job #739400)
#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];
void put(int k,int n){
for(;n>=0;n--)
if(BST[n]==k){ put(k-1,n-1);
printf("%d ",V[n]); return ; }
}
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; }
}
printf("%d\n",Q.size());
put(Q.size(),n);
}