Pagini recente » Cod sursa (job #63418) | Cod sursa (job #157964) | Cod sursa (job #1655919) | Cod sursa (job #1809944) | Cod sursa (job #2117764)
#include <fstream>
using namespace std;
ifstream in("scmax.in");
ofstream out("scmax.out");
const int N = 1000001;
int n, d[N], v[N];
void rec(int i) {
if (d[i] == 0) return;
int j;
for (j = i - 1; j >= 0; j--) {
if (d[i] - 1 == d[j]) {
rec(j);
j = -1;
}
}
rec(j);
out << v[i] << ' ';
}
int main()
{
int r = 0;
in >> n;
for (int i = 1; i <= n; i++) {
in >> v[i];
for (int j = i; j >= 0; j--) {
if (v[j] < v[i]) r = max(r, d[j]);
}
d[i] = 1 + r;
}
out << d[n] << '\n';
int poz = 0;
r = 0;
for (int i = 1; i <= n; i++) {
if (d[i] > r) {
r = d[i];
poz = i;
}
}
rec(poz);
}