Submission #1195385

#TimeUsernameProblemLanguageResultExecution timeMemory
1195385marcus06Global Warming (CEOI18_glo)C++20
100 / 100
38 ms2776 KiB
#include <bits/stdc++.h> using namespace std; using lli = long long; #ifdef LOCAL #include </home/marcus06/mycp/Library/debug.h> #else #define debug(...) #endif void solve() { int n, x; cin >> n >> x; vector <int> a(n); for (int i = 0; i < n; ++i) { cin >> a[i]; } vector <int> lis; vector <int> pre(n); for (int i = 0; i < n; ++i) { int p = lower_bound(lis.begin(), lis.end(), a[i] - x) - lis.begin(); if (p == (int) lis.size()) { lis.push_back(a[i] - x); } else { lis[p] = a[i] - x; } pre[i] = p + 1; } lis.clear(); int ans = 1; for (int i = n - 1; i >= 0; --i) { int p = lower_bound(lis.begin(), lis.end(), a[i], greater <int>()) - lis.begin(); int p2 = lower_bound(lis.begin(), lis.end(), a[i] - x, greater <int>()) - lis.begin(); if (p == (int) lis.size()) { lis.push_back(a[i]); } else { lis[p] = a[i]; } ans = max(ans, pre[i] + p2); } cout << ans << '\n'; } int main() { std::cin.tie(0)->sync_with_stdio(0); #ifdef LOCAL auto begin = std::chrono::high_resolution_clock::now(); #endif int tt = 1; while (tt--) { solve(); } #ifdef LOCAL auto end = std::chrono::high_resolution_clock::now(); auto elapsed = std::chrono::duration_cast<std::chrono::nanoseconds>(end - begin); std::cerr << "Time measured: " << elapsed.count() * 1e-9 << " seconds.\n"; #endif 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...