Pagini recente » Cod sursa (job #1866394) | Cod sursa (job #601650) | Cod sursa (job #1000468) | Cod sursa (job #2929220) | Cod sursa (job #2105423)
#include <fstream>
#include <cmath>
#include <algorithm>
#define NMAX 100005
using namespace std;
ifstream cin("scmax.in");
ofstream cout("scmax.out");
struct str {
int val, pos, t, e;
};
str a[NMAX];
int n;
int main() {
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> a[i].val;
a[i].pos = i;
}
a[n].e = 1;
for (int i = n - 1; i > 0; i--) {
int maxim = 0, source = 0;
for (int j = i + 1; j <= n; j++) {
if (a[i].val < a[j].val) {
if (maxim < a[j].e) {
source = j;
maxim = a[j].e;
}
}
}
a[i].e = maxim + 1;
a[i].t = source;
}
int maxim = 0, pos = 0;
for (int i = 1; i <= n; i++) {
if (maxim < a[i].e) {
maxim = a[i].e;
pos = i;
}
}
cout << maxim <<'\n';
while (pos) {
cout << a[pos].val << ' ';
pos = a[pos].t;
}
//system("pause");
}