Pagini recente » Cod sursa (job #778274) | Cod sursa (job #2438795) | Cod sursa (job #3233573) | Cod sursa (job #70457) | Cod sursa (job #3228627)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("scmax.in");
ofstream fout ("scmax.out");
int main() {
int n; fin >> n;
int a[n + 1];
for (int i = 1; i <= n; i++) {
fin >> a[i];
}
vector<int>v;
for (int i = 1; i <= n; i++) {
int l = 0, r = (int)v.size() - 1, where = -1;
while (l <= r) {
int mid = (l + r) >> 1;
if (v[mid] >= a[i]) {
where = mid;
r = mid - 1;
} else {
l = mid + 1;
}
}
if (where == -1) {
v.push_back(a[i]);
} else {
v[where] = a[i];
}
}
fout << (int)v.size() << endl;
for (int x : v) {
fout << x << " ";
}
}