Pagini recente » Cod sursa (job #924917) | Cod sursa (job #867176) | Cod sursa (job #2740380) | Cod sursa (job #2720407) | Cod sursa (job #2605396)
#include <cstdio>
using namespace std;
int main() {
int n, i, j, x, l = 0, v[100005], lis[100005] = {0}, st, dr, m;
freopen("scmax.in", "r", stdin);
freopen("scmax.out", "w", stdout);
scanf("%d", &n);
for(i = 1; i <= n; ++i) {
scanf("%d", &x);
if(x > lis[l])
lis[++l] = x;
else {
st = 1, dr = l;
while(st < dr) {
m = (st + dr) / 2;
if(lis[m] > x)
dr = m - 1;
else
st = m + 1;
}
lis[st] = x;
}
}
printf("%d\n", l);
for(i = 1; i <= l; ++i)
printf("%d ", lis[i]);
}