Submission #1059468

#TimeUsernameProblemLanguageResultExecution timeMemory
1059468sssamuiGlobal Warming (CEOI18_glo)C++17
42 / 100
39 ms7132 KiB
#include <iostream> #include <cstdio> #include <vector> #include <cmath> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n, x; cin >> n >> x; vector<int> t(n); for (int i = 0; i < n; i++) cin >> t[i]; vector<pair<int, int>> pref(n); vector<int> lis(0); for (int i = 0; i < n; i++) { if (lis.empty() || (t[i] > lis.back())) pref[i].second = lis.size() + 1; else { int l = 0, r = lis.size() - 1; while (l < r) { int m = l + (r - l) / 2; if (lis[m] < t[i]) l = m + 1; else r = m; } pref[i].second = l + 1; } t[i] -= x; if (lis.empty() || (t[i] > lis.back())) { pref[i].first = lis.size() + 1; lis.push_back(t[i]); } else { int l = 0, r = lis.size() - 1; while (l < r) { int m = l + (r - l) / 2; if (lis[m] < t[i]) l = m + 1; else r = m; } pref[i].first = l + 1; lis[l] = t[i]; } } vector<pair<int, int>> sfx(n); vector<int> lds(0); for (int i = n - 1; i > -1; i--) { if (lds.empty() || (t[i] < lds.back())) sfx[i].second = lds.size() + 1; else { int l = 0, r = lds.size() - 1; while (l < r) { int m = l + (r - l) / 2; if (lds[m] > t[i]) l = m + 1; else r = m; } sfx[i].second = l + 1; } t[i] += x; if (lds.empty() || (t[i] < lds.back())) { sfx[i].first = lds.size() + 1; lds.push_back(t[i]); } else { int l = 0, r = lds.size() - 1; while (l < r) { int m = l + (r - l) / 2; if (lds[m] > t[i]) l = m + 1; else r = m; } sfx[i].second = l + 1; lds[l] = t[i]; } } int ans = 2; for (int i = 0; i < n; i++) ans = fmax(ans, pref[i].first + sfx[i].second); for (int i = 0; i < n; i++) ans = fmax(ans, pref[i].second + sfx[i].first); ans--; 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...