Pagini recente » Cod sursa (job #2586155) | Cod sursa (job #952789) | Cod sursa (job #93470) | Cod sursa (job #406809) | Cod sursa (job #2969480)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int n;
int v[10]; //aaaaaaaaaaaaaaa
int bef[1000005];
vector <int> ans;
int top;
int BinSearch(int num) {
int lf = 1;
int rg = top;
int best = 0;
while (lf <= rg) {
int mid = (lf + rg) / 2;
if (v[mid] < num) {
lf = mid + 1;
best = mid;
}
else {
rg = mid - 1;
}
}
return best;
}
int main() {
fin >> n;
for (int i = 1; i <= n; i++) {
int x;
fin >> x;
int index = BinSearch(x);
index++;
v[index] = x;
bef[x] = v[index - 1];
if (index > top) {
top++;
}
}
fout << top << '\n';
ans.push_back(v[top]);
while (bef[v[top]]) {
ans.push_back(bef[v[top]]);
top--;
}
while (!ans.empty()) {
fout << ans.back() << ' ';
ans.pop_back();
}
fout << '\n';
}