Pagini recente » Cod sursa (job #2392611) | Cod sursa (job #535173) | Cod sursa (job #579304) | Cod sursa (job #1088214) | Cod sursa (job #3241991)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int main(){
int n;
fin>>n;
vector<int> v(n+1), max1(n+1), pre1(n+1);
for(int i=1;i<=n;i++){
fin>>v[i];
int cnt=0;
for(int j=1;j<i;j++){
if(v[j]<v[i]){
pre1[i]=j;
cnt=max(cnt, max1[j]);
}
}
max1[i]=cnt+1;
}
int maxim=-1, i=-1;
for(int j=1;j<=n;j++){
if(maxim<max1[j]){
maxim=max1[j];
i=j;
}
}
vector<int> ans;
ans.push_back(v[i]);
while(i>0){
if(pre1[i]!=0){
ans.push_back(v[pre1[i]]);
}
i=pre1[i];
}
fout<<maxim<<'\n';
reverse(ans.begin(),ans.end());
for(int i:ans){
fout<<i<<' ';
}
}