Pagini recente » Cod sursa (job #1864321) | Cod sursa (job #3225780) | Cod sursa (job #2099992) | Cod sursa (job #687953) | Cod sursa (job #2062382)
#include<stdio.h>
#include<stdlib.h>
int main() {
int n;
long t[100001] = { 0 }, l[100001] = { 0 };
freopen("scmax.in", "r", stdin);
freopen("scmax.out", "w", stdout);
scanf("%d", &n);
for (int i = 0; i < n; i++)
scanf("%d", &t[i]);
int m = -1;
for (int i = 1; i < n; i++) {
for (int j = 0; j < i; j++)
if (t[j] < t[i] && l[i] < l[j] + 1) {
l[i] = l[j] + 1;
if (m < l[i])m = l[i];
}
}
printf("%d\n", m + 1);
int max = -1;
for (int i = 0; i < n-1; i++) {
int min[2] = { t[i],i };
while(l[i]==l[i+1]){
if (t[i+1] < min[0]) {
min[0] = t[i+1];
min[1] = i+1;
}
i++;
}
printf("%d ", t[min[1]]);
max = l[min[1]];
}
return 0;
}