Pagini recente » Cod sursa (job #3293762) | Cod sursa (job #3293462) | Cod sursa (job #3292683) | Cod sursa (job #3294115) | Cod sursa (job #3293073)
#include <bits/stdc++.h>
using namespace std;
#define ll long long
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int main()
{
int n; fin>>n;
vector<ll> arr(n+1);
for(int i=1;i<=n;i++)
fin>>arr[i];
vector<int> dp(n+1,1);
vector<ll> prev(n+1,0);
for(int i=1;i<=n;i++){
for(int j=1;j<i;j++)
if(arr[j]<arr[i] && dp[j]+1>dp[i]){
dp[i]=dp[j]+1;
prev[i]=j;
}
}
ll lis= *max_element(dp.begin(), dp.end());
cout<<lis<<endl;
int index_lis= find(dp.begin(), dp.end(), lis)-dp.begin();
vector<ll> bune;
while(index_lis!=0){
bune.push_back(arr[index_lis]);
//cout<<arr[index_lis]<<" ";
index_lis=prev[index_lis];
}
reverse(bune.begin(), bune.end());
for(auto it:bune)
fout<<it<<" ";
}