Pagini recente » Cod sursa (job #2385279) | Cod sursa (job #150580) | Cod sursa (job #2135735) | Cod sursa (job #384896) | Cod sursa (job #2541722)
using namespace std;
#define fisier "scmax"
#ifdef fisier
#include <fstream>
ifstream in(fisier ".in");
ofstream out(fisier ".out");
#else
#include <iostream>
#define in cin
#define out cout
#endif
const int MAX_N = 100000;
int d[MAX_N + 1], sol[MAX_N], max_lun;
int cb(int val) { // primul element >= val
int st = 0, dr = max_lun, m;
while (st <= dr) {
m = (dr + st) / 2;
if (d[m] < val) {
st = m + 1;
} else {
dr = m - 1;
}
}
return st;
}
int main() {
int n, iter, i;
in >> n;
while (n--) {
in >> iter;
i = cb(iter);
d[i] = iter;
if (i > max_lun) {
max_lun++;
copy(d + 1, d + max_lun + 1, sol);
}
}
out << max_lun << '\n';
for (i = 0; i < max_lun; i++) {
out << sol[i] << ' ';
}
}
//