Submission #538457

#TimeUsernameProblemLanguageResultExecution timeMemory
538457pokmui9909Global Warming (CEOI18_glo)C++17
52 / 100
57 ms6088 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; ll N, X; ll A[200005], L[200005]; int main(){ cin.tie(0) -> sync_with_stdio(false); cin >> N >> X; for(int i = 0; i < N; i++){ cin >> A[i]; } vector<ll> dp; for(int i = 0; i < N; i++){ if(dp.empty() || dp.back() < A[i]){ dp.push_back(A[i]); L[i] = dp.size(); } else { ll j = lower_bound(dp.begin(), dp.end(), A[i]) - dp.begin(); dp[j] = A[i], L[i] = j; } } dp.clear(); ll ans = 0; for(int i = N - 1; i >= 0; i--){ ans = max(ans, L[i] + (lower_bound(dp.begin(), dp.end(), -A[i] + X) - dp.begin())); if(dp.empty() || dp.back() < -A[i]) dp.push_back(-A[i]); else *lower_bound(dp.begin(), dp.end(), -A[i]) = -A[i]; } cout << ans; }
#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...