Pagini recente » simv_2 | Cod sursa (job #3166919) | Cod sursa (job #2135747) | Cod sursa (job #1758630) | Cod sursa (job #3192645)
#include <fstream>
#include <vector>
#include <iostream>
using namespace std;
int n,x,size_;
vector <int>v,ans;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
void calc_LIS(){
if(v.size()==1)
fout<<1<<'\n';
ans.push_back(v[0]);
for(int i=1;i<n;i++){
if(v[i]>ans.back()){
ans.push_back(v[i]);
} else{
int low=lower_bound(ans.begin(),ans.end(),v[i])-ans.begin();
ans[low]=v[i];
}
}
}
int main() {
fin>>n;
for(int i=0;i<n;i++){
fin>>x;
v.push_back(x);
}
calc_LIS();
fout<<ans.size()<<'\n';
for(auto a:ans){
fout<<a<<" ";
}
return 0;
}