Pagini recente » Cod sursa (job #880780) | Cod sursa (job #2852648) | Cod sursa (job #147530) | Cod sursa (job #1058348) | Cod sursa (job #3290949)
#include <bits/stdc++.h>
using namespace std;
int n;
vector<int> v;
vector<int> dp;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
#define cin fin
#define cout fout
int main() {
cin >> n;
v.resize(n);
dp.resize(n + 1);
for (auto &x : v) {
cin >> x;
}
int inf = 2e9 + 2;
fill(dp.begin() + 1, dp.end(), inf);
dp[0] = -inf;
dp[1] = v[0];
int lmax = 1;
for (int i = 1; i < n; ++i) {
int j = n
- (upper_bound(dp.rbegin(), dp.rend(), v[i], greater{})
- dp.rbegin());
dp[j + 1] = v[i];
lmax = max(lmax, j + 1);
}
cout << lmax << "\n";
for (int i = 1; i <= lmax; ++i) {
cout << dp[i] << " ";
}
cout << endl;
}