Pagini recente » Cod sursa (job #2714152) | Cod sursa (job #2766277) | Cod sursa (job #2930847) | Cod sursa (job #3186013) | Cod sursa (job #966333)
Cod sursa(job #966333)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <deque>
#include <list>
#include <string>
#include <algorithm>
using namespace std;
ifstream ff("scmax.in");
ofstream gg("scmax.out");
#define max 100001
int n, aa[max], bb[max], cc[max], k;
int bsc(int l, int r, int v){
int m;
while(l<r){
m=(l+r)/2;
if(cc[m]<v) l=m+1; else r=m;
}
return l;
}
void pnt(int n){
for(int i=n;i>0;i--)
if(bb[i]==k){ k--; pnt(i-1); gg << aa[i] << " "; }
}
int main(){
int p;
ff >> n;
for(int i=1;i<=n;i++) ff >> aa[i];
for(int i=1;i<=n;i++){
p = bsc(1,k+1,aa[i]);
bb[i]=p;
cc[p]=aa[i];
if(p>k)k=p;
}
gg << k << "\n";
pnt(n);
return 0;
}