Pagini recente » Cod sursa (job #1908641) | Cod sursa (job #957986) | Cod sursa (job #322167) | Cod sursa (job #2907753) | Cod sursa (job #3252906)
#include <bits/stdc++.h>
using namespace std;
vector<int> LIS(vector<int>& nums){
vector<int> ans;
ans.push_back(nums[0]);
for(auto x : nums) {
if(x > ans.back()) {
/// we can go forward with the solution
ans.push_back(x);
}else {
int first = lower_bound(ans.begin(), ans.end(), x) - ans.begin();
ans[first] = x;
}
}
return ans;
}
int32_t main(void){
ofstream cout("scmax.out");
ifstream cin("scmax.in");
vector<int> nums;
int n;
cin >> n;
for(int i = 1;i <= n;i++) {
int x;
cin >> x;
nums.push_back(x);
}
vector<int> ans =LIS(nums);
cout << ans.size() << '\n';
for(auto it : ans) {
cout << it << ' ';
}
}