Pagini recente » Cod sursa (job #3230635) | Cod sursa (job #2216094) | Cod sursa (job #2520045) | Cod sursa (job #2164364) | Cod sursa (job #322582)
Cod sursa(job #322582)
#include<stdio.h>
#include<algorithm>
using namespace std;
long n,lq,i,a[100050],q[100050],v[100050],m;
long* p;
int main()
{
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
scanf("%ld",&n);
lq=0;
for(i=1;i<=n;++i)
{scanf("%ld",&a[i]);
p=lower_bound(q,q+lq,a[i]);
if(q[p-q]<a[i])++p;
q[p-q]=a[i];
v[i]=p-q;
if(p-q>lq)lq++;}
m=lq;
printf("%ld\n",m);
for(i=n;i&&m;--i)
if(v[i]==m){q[m]=a[i];--m;}
for(i=1;i<=lq;++i)
printf("%ld ",q[i]);
printf("\n");
return 0;
}