Submission #1213888

#TimeUsernameProblemLanguageResultExecution timeMemory
1213888dubabubaGlobal Warming (CEOI18_glo)C++20
100 / 100
79 ms2632 KiB
#include <bits/stdc++.h> using namespace std; const int INF = 1e9 + 10; const int mxn = 1e6 + 10; int n, x, a[mxn], dp[mxn]; int main() { cin >> n >> x; for(int i = 0; i < n; i++) cin >> a[i]; vector<int> MS(n + 1, INF); for(int i = n - 1; i >= 0; i--) { int val = -a[i]; int ind = lower_bound(MS.begin(), MS.end(), val) - MS.begin(); dp[i] = ind + 1; // cout << i << " " << a[i] << ": " << dp[i] << endl; MS[ind] = val; } MS.clear(); MS.resize(n + 1, INF); int ans = 0; for(int i = 0; i < n; i++) { int tmp = lower_bound(MS.begin(), MS.end(), a[i]) - MS.begin(); ans = max(ans, tmp + dp[i]); // cout << i << ": " << tmp << " + " << dp[i] << endl; int val = a[i] - x; int ind = lower_bound(MS.begin(), MS.end(), val) - MS.begin(); MS[ind] = val; } cout << ans << endl; return 0; }
#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...