Pagini recente » Cod sursa (job #1218164) | Cod sursa (job #440928) | Cod sursa (job #2843132) | Cod sursa (job #2990485) | Cod sursa (job #936532)
Cod sursa(job #936532)
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int n;
fin >> n;
int a[n], b[n];
vector<int> min;
vector<int>::iterator it;
for (int i = 0; i < n; ++i) {
fin >> a[i];
it = lower_bound(min.begin(), min.end(), a[i]);
if (it != min.end()) {
*it = a[i];
b[i] = it-min.begin()+1;
}
else {
min.push_back(a[i]);
b[i] = min.size();
}
}
int ans = min.size();
int sub[ans];
for (int i = n-1, j = ans; j > 0; --i)
if (b[i] == j && a[i] < sub[j])
sub[--j] = a[i];
fout << ans << '\n';
for (int i = 0; i < ans; ++i)
fout << sub[i] << ' ';
return 0;
}