Mai intai trebuie sa te autentifici.
Cod sursa(job #3139061)
Utilizator | Data | 24 iunie 2023 17:28:43 | |
---|---|---|---|
Problema | Subsir crescator maximal | Scor | 65 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva educationala | Marime | 0.69 kb |
#include <fstream>
#include <vector>
#define int long long
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int32_t main(){
int n;
f >> n;
vector<int>nums;
for (int i = 1; i <= n; ++i) {
int x;
f >> x;
nums.push_back(x);
}
vector<int> ans;
ans.push_back(nums[0]);
for (int i = 1; i < n; i++) {
if (nums[i] > ans.back())
ans.push_back(nums[i]);
else {
int low = lower_bound(ans.begin(), ans.end(), nums[i]) - ans.begin();
ans[low] = nums[i];
}
}
g << ans.size() << '\n';
for (auto i : ans)
g << i << ' ';
return 0;
}