Pagini recente » Cod sursa (job #1879425) | Istoria paginii runda/monthly-2014-runda-1/clasament | Cod sursa (job #1729902) | Cod sursa (job #1351989) | Cod sursa (job #2800996)
/* [A][M][C][B][N] / [K][R][I][P][6][8] */
#include <bits/stdc++.h>
using namespace std;
const char sp = ' ', nl = '\n';
const int MOD = 10007;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int main() {
ios::sync_with_stdio(0);
cin.tie(0), cout.tie(0);
int n;
fin >> n;
vector<int> v(n), sclm;
for (int& e : v) fin >> e;
for (int& e : v) {
if (sclm.empty())
sclm.emplace_back(e);
else if (sclm.back() < e)
sclm.emplace_back(e);
else {
int st = -1, dr = sclm.size();
while (dr - st > 1) {
int mid = st + (dr - st) / 2;
if (e <= sclm[mid])
dr = mid;
else
st = mid;
}
sclm[dr] = e;
}
}
fout << sclm.size() << nl;
for (const int& e : sclm) fout << e << sp;
}