Pagini recente » Cod sursa (job #193678) | Cod sursa (job #2933132) | Cod sursa (job #2361287) | Cod sursa (job #1641868) | Cod sursa (job #931178)
Cod sursa(job #931178)
#include<cstdio>
#include<algorithm>
static int v[100005], x[100005], d[100005], r[100005];
int main()
{
freopen ("scmax.in","r",stdin);
#ifdef INFOARENA
freopen ("scmax.out","w",stdout);
#endif
int n, nx=0;
scanf ("%d",&n);
for(int i=0;i<n;i++){
scanf ("%d",v+i);
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;
}