Pagini recente » Cod sursa (job #3219757) | Cod sursa (job #1359255) | Cod sursa (job #939482) | Cod sursa (job #394660) | Cod sursa (job #931177)
Cod sursa(job #931177)
#include<cctype>
#include<cstdio>
#include<algorithm>
static int v[100005], x[100005], d[100005], r[100005];
int g()
{
int x;
while(!isdigit (x=getchar()));
int ret=x-'0';
while(isdigit (x=getchar()))
ret=ret*10+x-'0';
return ret;
}
#define BUFSIZE 1024*1024
static char buf[BUFSIZE];
int main()
{
freopen ("scmax.in","r",stdin);
#ifdef INFOARENA
freopen ("scmax.out","w",stdout);
#endif
setvbuf (stdin, buf, _IOFBF, BUFSIZE);
int n=g(), nx=0;
for(int i=0;i<n;i++){
v[i]=g();
int *p=std::lower_bound (x,x+nx,v[i]);
if(p==x+nx)
nx++;
*p=v[i];
d[i]=p-x;
}
int rn=0;
while(n-->=0)
if(d[n]==nx-1){
r[rn++]=v[n];
nx--;
}
printf ("%d\n",rn);
for(int i=rn;i;i--)
printf ("%d ",r[i-1]);
return 0;
}