Pagini recente » Cod sursa (job #1705571) | Cod sursa (job #3170651) | Cod sursa (job #1482265) | Cod sursa (job #618613) | Cod sursa (job #611834)
Cod sursa(job #611834)
#include <cstdio>
#define MAX 100001
int v[MAX],l[MAX],c[MAX],x=0,i;
int insert(int lf,int rt){
int m;
m=(lf+rt)/2;
if(lf==rt){
c[rt]=v[i];
if(rt>x)x=rt;
l[i]=rt;
} else
if(v[i]>c[m])insert(m+1,rt);else
insert(lf,m);
}
void print(int x,int n){
int i;
for(i=n;i>0;i--)
if(l[i]==x){
print(x-1,i-1);
printf("%d ",v[i]);
return; };
}
int main(){
int n;
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)scanf("%d",&v[i]);
for(i=1;i<=n;i++)insert(1,x+1);
printf("%d\n",x);
print(x,n);
}