Pagini recente » Monitorul de evaluare | Cod sursa (job #27754) | Cod sursa (job #2931747) | Cod sursa (job #984219) | Cod sursa (job #2603742)
#include <cstdio>
using namespace std;
int main() {
int n, i, j, mv = 0, mi = 0,
v[100005], rez[100005] {}, pred[100005];
freopen("scmax.in", "r", stdin);
freopen("scmax.out", "w", stdout);
scanf("%d", &n);
for(i = 1; i <= n; ++i)
scanf("%d", &v[i]);
for(i = 1; i <= n; i++) {
for(j = 1; j < i; j++)
if(v[j] < v[i] && rez[i] < 1 + rez[j]) {
rez[i] = 1 + rez[j];
pred[i] = j;
}
if(rez[i] > mv) {
mv = rez[i];
mi = i;
}
}
for(n = 0; mi; mi = pred[mi])
rez[++n] = v[mi];
printf("%d\n", n);
for(i = n; i >= 1; --i)
printf("%d ", rez[i]);
}