Pagini recente » Cod sursa (job #2788388) | Cod sursa (job #2702724) | Cod sursa (job #2538693) | Cod sursa (job #23352) | Cod sursa (job #810157)
Cod sursa(job #810157)
#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;
int n,j,k,i,oo=(1<<31)-1;
int I[100001],V[100001],B[100001],x[100001];
int main()
{
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
{
V[i]=oo;
scanf("%d",&x[i]);
j=lower_bound(V,V+i,x[i])-V;
if(x[i]<V[j]) {V[j]=x[i];I[j]=i;B[i]=I[j-1];}
}
for(i=n;i>=1;i--)
if(V[i]<oo) break;
printf("%d\n",i);
for(j=i,k=I[i];j>=0;j--)
{
I[j]=k;
k=B[k];
}
for(j=1;j<=i;j++) printf("%d ",x[I[j]]);
return 0;
}