Submission #969240

#TimeUsernameProblemLanguageResultExecution timeMemory
969240duckindogTriple Jump (JOI19_jumps)C++17
5 / 100
4038 ms23528 KiB
#include <bits/stdc++.h> using namespace std; const int N = 500'000 + 10; int n; int a[N]; int q; struct Query { int l, r; friend istream& operator >> (istream& is, auto& rhs) { return is >> rhs.l >> rhs.r; } } Q[N]; int f[N][19], lg[N]; void deal() { for (int i = 2; i <= n; ++i) lg[i] = lg[i / 2] + 1; for (int i = 1; i <= n; ++i) f[i][0] = a[i]; for (int j = 1; j <= 18; ++j) for (int i = 1; i + (1 << j) - 1 <= n; ++i) f[i][j] = max(f[i][j - 1], f[i + (1 << j - 1)][j - 1]); } int get(int l, int r) { int j = lg[r - l + 1]; return max(f[l][j], f[r - (1 << j) + 1][j]); } int32_t main() { cin.tie(0)->sync_with_stdio(0); cin >> n; for (int i = 1; i <= n; ++i) cin >> a[i]; cin >> q; for (int i = 1; i <= q; ++i) cin >> Q[i]; deal(); for (int i = 1; i <= q; ++i) { const auto& [l, r] = Q[i]; long long answer = 0; for (int j = l; j <= r - 2; ++j) { auto cal = [&](int mid) { return 1ll * a[j] + get(j + 1, mid) + get(mid + mid - j, r); }; for (int t = j + 1; t <= (j + r) / 2; ++t) answer = max(answer, cal(t)); } cout << answer << "\n"; } }

Compilation message (stderr)

jumps.cpp:11:45: warning: use of 'auto' in parameter declaration only available with '-fconcepts-ts'
   11 |   friend istream& operator >> (istream& is, auto& rhs) {
      |                                             ^~~~
jumps.cpp: In function 'void deal()':
jumps.cpp:23:48: warning: suggest parentheses around '-' inside '<<' [-Wparentheses]
   23 |       f[i][j] = max(f[i][j - 1], f[i + (1 << j - 1)][j - 1]);
      |                                              ~~^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...