Pagini recente » Cod sursa (job #72574) | Cod sursa (job #287720) | Cod sursa (job #3129700) | Cod sursa (job #1736026) | Cod sursa (job #2171924)
#include <iostream>
#include <cstdio>
using namespace std;
#define DIM 100004
int V[DIM];
int ts, N, x;
int bin_search(int val) {
int pw = 1;
while(pw <= ts) {
pw <<= 1;
}
pw >>= 1;
int pos = 0;
while(pw) {
if(pos + pw <= ts) {
if(V[pos + pw] < val) {
pos += pw;
}
}
pw >>= 1;
}
return pos;
}
int main() {
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
scanf("%d\n", &N);
for(int i = 1; i <= N; ++i) {
scanf("%d", &x);
int pos = bin_search(x);
if(pos == ts) {
V[++ts] = x;
}
else {
if(V[pos + 1] > x && pos == ts - 1) {
V[pos + 1] = x;
}
}
}
cout << ts << '\n';
for(int i = 1; i <= ts; ++i) {
cout << V[i] << ' ';
}
cout << '\n';
return 0;
}