제출 #850206

#제출 시각아이디문제언어결과실행 시간메모리
850206overwatch9Global Warming (CEOI18_glo)C++17
62 / 100
83 ms4688 KiB
#include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { int n, x; cin >> n >> x; vector <int> nums(n); for (int i = 0; i < n; i++) cin >> nums[i]; vector <int> lis(n), dp; vector <int> lis_val(n); for (int i = 0; i < n; i++) { auto x = lower_bound(dp.begin(), dp.end(), nums[i]); if (x == dp.end()) dp.push_back(nums[i]); else *x = nums[i]; lis_val[i] = dp.back(); lis[i] = dp.size(); } dp.clear(); for (int i = 0; i < n; i++) { nums[i] = -(nums[i] + x); lis_val[i] = -(lis_val[i] + x); } int ans = 0; for (int i = n-1; i >= 0; i--) { auto y = lower_bound(dp.begin(), dp.end(), lis_val[i] + x); ans = max(ans, (int)(y - dp.begin()) + lis[i]); auto z = lower_bound(dp.begin(), dp.end(), nums[i]); if (z == dp.end()) dp.push_back(nums[i]); else *z = nums[i]; } cout << ans << '\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...