Pagini recente » Cod sursa (job #1403074) | Cod sursa (job #236598) | Cod sursa (job #183927) | Cod sursa (job #311850) | Cod sursa (job #1244372)
#include <stdio.h>
#define Nmax 100005
int n;
int a[Nmax];
int best[Nmax];
int poz[Nmax];
int sir_max, poz_max;
void solve(){
a[n + 1] = 2000000005;
for (int i = n; i >= 1; --i)
for (int j = n + 1; j > i; --j)
if (best[j] + 1 > best[i] && a[i] < a[j]){
best[i] = best[j] + 1;
poz[i] = j;
}
// for (int i = 1; i <= n; ++i)
// printf("%d ", best[i]);
// printf("\n");
}
void write(){
for (int i = 1; i <= n; ++i)
if (best[i] > sir_max){
sir_max = best[i];
poz_max = i;
}
printf("%d\n", sir_max);
while (poz_max != n + 1){
printf("%d ", a[poz_max]);
poz_max = poz[poz_max];
}
printf("\n");
}
int main(){
freopen("scmax.in", "r", stdin);
freopen("scmax.out", "w", stdout);
scanf("%d", &n);
for (int i = 1; i <= n; ++i)
scanf("%d", &a[i]);
solve();
write();
return 0;
}