Pagini recente » Cod sursa (job #3200152) | Cod sursa (job #2851558) | Cod sursa (job #2282631) | Cod sursa (job #2286105) | Cod sursa (job #2522555)
#include <fstream>
#include <vector>
using namespace std;
ifstream in("scmax.in");
ofstream out("scmax.out");
int main() {
int n;
in >> n;
vector<int> a(n);
for (int i = 0; i < n; ++i) in >> a[i];
vector<int> r(n+1, -1);
vector<int> sol(n+1, -1);
r[1] = a[0];
int pos = 1;
sol[1] = a[0];
for (int i = 1; i < n; ++i) {
if (a[i] > r[pos]) {
r[++pos] = a[i];
for (int j = 1; j <= pos; ++j)
sol[j] = r[j];
} else {
for (int j = pos-1; j >= 0; --j)
if (a[i] > r[j] && a[i] < r[j+1]) {
r[j+1] = a[i];
break;
}
}
}
out << pos << "\n";
for (int i = 1; i <= pos; ++i)
out << sol[i] << " ";
}