Pagini recente » Cod sursa (job #1675431) | Cod sursa (job #2088628) | Cod sursa (job #1261) | Cod sursa (job #1790568) | Cod sursa (job #2275132)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("scmax.in");
ofstream fout ("scmax.out");
int v[100005], x[100005];
vector <pair <int, int> > V;
stack <int> s;
void f (int n)
{
int val = v[n];
for (int i = n - 1; i > 0; i --) {
if (v[i] < val && x[i] > x[n]) {
x[n] = x[i];
}
}
x[n] ++;
}
int main()
{
int n;
fin >> n;
for (int i = 1; i <= n; i ++) fin >> v[i];
x[1] = 1;
int maxim = 1, poz = 1;
for (int i = 2; i <= n; i ++) {
f(i);
if (x[i] > maxim) maxim = x[i], poz = i;
}
fout << maxim << "\n";
for (int i = poz; i > 0; i --) {
if (x[i] == maxim) s.push(v[i]), maxim --;
}
while (!s.empty()) {
fout << s.top() << " ";
s.pop();
}
return 0;
}