Pagini recente » Cod sursa (job #2490554) | Cod sursa (job #660100) | Cod sursa (job #710671) | Cod sursa (job #3133270) | Cod sursa (job #1199190)
#include <cstdio>
#define SIZE 100005
int N, x;
int lmax, best[SIZE];
int main()
{
freopen("scmax.in", "r", stdin);
freopen("scmax.out", "w", stdout);
scanf("%d", &N);
for (int i=0; i<N; ++i){
int x, li=1, ls=lmax;
scanf("%d", &x);
while (li<=ls){
int m=(li+ls)/2;
if (best[m]>=x)
ls = m-1;
else
li = m+1;
}
if (!best[li]){
++lmax;
}
best[li] = x;
}
printf("%d\n", lmax);
for (int i=1; i<=lmax; ++i)
printf("%d ", best[i]);
return 0;
}