Pagini recente » Cod sursa (job #1024519) | Cod sursa (job #1054485) | Cod sursa (job #2393743) | Cod sursa (job #2442292) | Cod sursa (job #1238155)
#include <cstdio>
#define max_n 100020
#define maxval 2000000020
using namespace std;
int n,a[max_n],p[max_n],m[max_n];
void btr(int k){
if(!k)return;
btr(p[k]);
printf("%d ",a[k]);
}
int main(void){
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
scanf("%d",&n);
int i=0,l=0;
for(i = 0;i<n;i++){
scanf("%d", &a[i]);
int fl=1,ll=l,md;
while(fl<=ll){
md=fl+(ll-fl)/2;
if(a[m[md]]<a[i])
fl=md+1;
else
ll=md-1;
}
int nl=fl;
p[i]=m[fl-1];
if(nl>l)l=nl;
m[nl]=i;
}
printf("%d\n",l);
btr(m[l]);
}