Pagini recente » Cod sursa (job #522944) | Cod sursa (job #1808855) | Cod sursa (job #2283312) | Cod sursa (job #2112658) | Cod sursa (job #2693306)
#include <bits/stdc++.h>
using namespace std;
int n, maxx, p, a[100005], dp[100005], sc[10005];
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]);
}
dp[n] = 1;
sc[n] = 1;
for (int i=n;i>=1;i--){
dp[i] = 1;
sc[i] = -1;
for (int j=i+1;j<=n;j++){
if (a[i]<a[j] && dp[i]<dp[j]+1){
dp[i] = dp[j] + 1;
sc[i] = j;
if (dp[i] > maxx) {
maxx = dp[i];
p = i;
}
}
}
}
int i = p;
printf("%d\n", maxx);
while(i != -1){
printf("%d ", a[i]);
i = sc[i];
}
return 0;
}