Submission #1205976

#TimeUsernameProblemLanguageResultExecution timeMemory
1205976duckindogFish 3 (JOI24_fish3)C++17
7 / 100
410 ms37296 KiB
#include <bits/stdc++.h> #define int long long using namespace std; const int N = 300'000 + 10, MAX = 1'000'000'000'000; int n, d, q; int c[N]; vector<pair<int, int>> save[N]; namespace IT { int f[N << 2], lazy[N << 2]; void push(int id, int l, int r) { if (!lazy[id]) return; int mid = (l + r) >> 1; f[id << 1] += lazy[id] * (mid - l + 1); f[id << 1 | 1] += lazy[id] * (r - mid); lazy[id << 1] += lazy[id]; lazy[id << 1 | 1] += lazy[id]; lazy[id] = 0; } void update(int id, int l, int r, int u, int v, int x) { if (v < l || r < u) return; if (u <= l && r <= v) { f[id] += x * (r - l + 1); lazy[id] += x; return; } push(id, l, r); int mid = (l + r) >> 1; update(id << 1, l, mid, u, v, x); update(id << 1 | 1, mid + 1, r, u, v, x); f[id] = f[id << 1] + f[id << 1 | 1]; } int query(int id, int l, int r, int u, int v) { if (v < l || r < u) return 0; if (u <= l && r <= v) return f[id]; push(id, l, r); int mid = (l + r) >> 1; return query(id << 1, l, mid, u, v) + query(id << 1 | 1, mid + 1, r, u, v); } } int answer[N]; int32_t main() { cin.tie(0)->sync_with_stdio(0); cin >> n >> d; for (int i = 1; i <= n; ++i) cin >> c[i]; cin >> q; for (int i = 1; i <= q; ++i) { int l, r; cin >> l >> r; save[r].push_back({l, i}); } auto get = [&](int i) { return c[i] - d * IT::query(1, 1, n, i, i); }; stack<int> st; for (int i = 1; i <= n; ++i) { for (int r = i; st.size(); ) { int x = get(r - 1), y = get(r); if (x <= y) break; IT::update(1, 1, n, st.top(), r - 1, (x - y - 1) / d + 1); r = st.top(); st.pop(); } st.push(i); for (auto [l, id] : save[i]) answer[id] = (get(l) < 0 ? -1 : IT::query(1, 1, n, l, i)); } for (int i = 1; i <= q; ++i) cout << answer[i] << "\n"; }
#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...