Pagini recente » Cod sursa (job #2340255) | Cod sursa (job #1322934) | Cod sursa (job #2935141) | Cod sursa (job #279995) | Cod sursa (job #3037500)
#include <bits/stdc++.h>
using namespace std;
int tatic[100001];
int dp[100001];
int a[100001];
void reconst(int t){
if(tatic[t]){
reconst(tatic[t]);
cout << a[t] << ' ';
}else{
cout << a[t] << ' ';
}
}
int main(void){
ofstream cout("scmax.out");
ifstream cin("scmax.in");
int n;
cin >> n;
for(int i = 1;i<=n;i++){
cin >> a[i];
}
dp[1] = 1;
int maxim = -1, poz = 0;
for(int i = 1;i<=n;i++){
int pz = 0, maxi = 0;
for(int j = i-1;j>=1;j--){
if(a[i] > a[j]){
if(maxi < dp[j]){
maxi = dp[j];
pz = j;
}
}
}
dp[i] = maxi + 1;
tatic[i] = pz;
if(maxim < dp[i]){
maxim = dp[i];
poz = i;
}
}
cout << maxim << '\n';
reconst(poz);
}