Pagini recente » Cod sursa (job #2504580) | Cod sursa (job #2130867) | Cod sursa (job #1522271) | Cod sursa (job #85743) | Cod sursa (job #186653)
Cod sursa(job #186653)
#define _CRT_SECURE_NO_WARNINGS
#include <cstdio>
#define N 100352
#define P 131072
int na, nb, a[N], b[N], c[N];
int search(int val)
{
int i, step;
for (step = 1; step <= nb; step <<= 1);
for (i = 0; step; step >>= 1)
if (i + step <= nb && b[i + step] < val)
i += step;
return i;
}
int main()
{
freopen("scmax.in", "rt", stdin);
freopen("scmax.out", "wt", stdout);
scanf("%d", &na);
for (int i = 1; i <= na; i++)
{
scanf("%d", a + i);
int pos = search(a[i]) + 1;
b[pos] = a[i];
c[i] = pos;
if (nb < pos)
nb = pos;
}
printf("%d\n", nb);
for (int i = na, j = nb; j; j--)
{
while (c[i] != j)
--i;
b[j] = a[i];
}
for (int i = 1; i <= nb; i++)
printf("%d ", b[i]);
printf("\n");
return 0;
}