Pagini recente » Monitorul de evaluare | Cod sursa (job #1901125) | Cod sursa (job #793298) | Cod sursa (job #1088126) | Cod sursa (job #913701)
Cod sursa(job #913701)
#include<cstdio>
#include<algorithm>
#define inf 2000000000
using namespace std;
int n,i,j,k,rez,a[100005],b[100005],v[100005];
int main()
{
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
scanf("%d",&n);
for (i=1;i<=n;i++)
{
scanf("%d",&v[i]);
a[i]=inf;
j=(lower_bound(a+1,a+i+1,v[i])-a);
a[j]=v[i];
b[i]=j;
rez=max(rez,j);
}
printf("%d\n",rez);j=rez;
for (i=n;i>0 && j>0;i--) if (b[i]==j) a[j]=v[i],j--;
for (i=1;i<=rez;i++) printf("%d ",a[i]);
return 0;
}