#include <bits/stdc++.h>
#define pii pair<int, int>
#define pll pair<long long, long long>
#define piii pair<int, pii>
#define plll pair<long long, pll>
#define tiii array<int, 3>
#define tiiii array<int, 4>
#define ff first
#define ss second
#define ee ss.ff
#define rr ss.ss
typedef long long ll;
const int INF = (int)1e9 + 7;
using namespace std;
vector<pii> qr[303030];
ll seg[1212121];
ll lazy[1212121];
void down(int ind, int s, int e, ll x)
{
seg[ind] += x * (e - s);
lazy[ind] += x;
}
void prop(int ind, int s, int e)
{
if(lazy[ind])
{
int mid = s + e >> 1;
down(ind << 1, s, mid, lazy[ind]);
down(ind << 1 | 1, mid, e, lazy[ind]);
lazy[ind] = 0;
}
}
void upd(int ind, int s, int e, int l, int r, ll x)
{
if(r <= s || e <= l) return;
if(l <= s && e <= r)
{
down(ind, s, e, x);
return;
}
prop(ind, s, e);
int mid = s + e >> 1;
upd(ind << 1, s, mid, l, r, x);
upd(ind << 1 | 1, mid, e, l, r, x);
seg[ind] = seg[ind << 1] + seg[ind << 1 | 1];
}
ll qry(int ind, int s, int e, int l, int r)
{
if(r <= s || e <= l) return 0;
if(l <= s && e <= r) return seg[ind];
prop(ind, s, e);
int mid = s + e >> 1;
return qry(ind << 1, s, mid, l, r) + qry(ind << 1 | 1, mid, e, l, r);
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int n; ll d; cin >> n >> d;
ll A[n]; for(auto &i : A) cin >> i;
int T; cin >> T;
for(int i = 0; i < T; ++i)
{
int l, r; cin >> l >> r; --l;
qr[r].push_back({l, i});
}
ll ps[n + 1]; ps[0] = 0;
for(int i = 0; i < n; ++i) ps[i + 1] = ps[i] + A[i];
vector<int> V;
ll ans[T];
for(int r = 1; r <= n; ++r)
{
upd(1, 0, n, r - 1, r, A[r - 1]);
V.push_back(r - 1);
while(V.size() >= 2)
{
ll x = qry(1, 0, n, V.back() - 1, V.back());
ll y = qry(1, 0, n, V.back(), V.back() + 1);
if(x <= y) break;
ll t = ((x - y - 1) / d + 1) * d;
upd(1, 0, n, V[(int)V.size() - 2], V.back(), -t);
V.pop_back();
}
for(auto [l, i] : qr[r])
{
if(qry(1, 0, n, l, l + 1) < 0) ans[i] = -1;
else ans[i] = (ps[r] - ps[l] - qry(1, 0, n, l, r)) / d;
}
// for(int i = 0; i < n; ++i) cout << qry(1, 0, n, i, i + 1) << ' '; cout << endl;
}
for(int i = 0; i < T; ++i) cout << ans[i] << '\n';
}
Compilation message
Main.cpp: In function 'void prop(int, int, int)':
Main.cpp:32:15: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
32 | int mid = s + e >> 1;
| ~~^~~
Main.cpp: In function 'void upd(int, int, int, int, int, ll)':
Main.cpp:49:14: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
49 | int mid = s + e >> 1;
| ~~^~~
Main.cpp: In function 'll qry(int, int, int, int, int)':
Main.cpp:61:14: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
61 | int mid = s + e >> 1;
| ~~^~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
9820 KB |
Output is correct |
2 |
Correct |
2 ms |
9820 KB |
Output is correct |
3 |
Correct |
2 ms |
9912 KB |
Output is correct |
4 |
Correct |
5 ms |
10076 KB |
Output is correct |
5 |
Correct |
4 ms |
10180 KB |
Output is correct |
6 |
Correct |
5 ms |
9968 KB |
Output is correct |
7 |
Correct |
4 ms |
9964 KB |
Output is correct |
8 |
Correct |
5 ms |
10076 KB |
Output is correct |
9 |
Correct |
4 ms |
10076 KB |
Output is correct |
10 |
Correct |
5 ms |
10076 KB |
Output is correct |
11 |
Correct |
4 ms |
10076 KB |
Output is correct |
12 |
Correct |
4 ms |
10076 KB |
Output is correct |
13 |
Correct |
4 ms |
10076 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
428 ms |
44468 KB |
Output is correct |
2 |
Correct |
332 ms |
44104 KB |
Output is correct |
3 |
Correct |
75 ms |
19868 KB |
Output is correct |
4 |
Correct |
349 ms |
44836 KB |
Output is correct |
5 |
Correct |
339 ms |
44880 KB |
Output is correct |
6 |
Correct |
323 ms |
43212 KB |
Output is correct |
7 |
Correct |
342 ms |
43276 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
113 ms |
23380 KB |
Output is correct |
2 |
Correct |
462 ms |
52564 KB |
Output is correct |
3 |
Correct |
427 ms |
52584 KB |
Output is correct |
4 |
Correct |
445 ms |
52460 KB |
Output is correct |
5 |
Correct |
432 ms |
52560 KB |
Output is correct |
6 |
Correct |
428 ms |
46100 KB |
Output is correct |
7 |
Correct |
446 ms |
46160 KB |
Output is correct |
8 |
Correct |
442 ms |
49488 KB |
Output is correct |
9 |
Correct |
456 ms |
49412 KB |
Output is correct |
10 |
Correct |
329 ms |
47208 KB |
Output is correct |
11 |
Correct |
376 ms |
47304 KB |
Output is correct |
12 |
Correct |
462 ms |
50380 KB |
Output is correct |
13 |
Correct |
408 ms |
50380 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
395 ms |
36432 KB |
Output is correct |
2 |
Correct |
444 ms |
45568 KB |
Output is correct |
3 |
Correct |
212 ms |
27732 KB |
Output is correct |
4 |
Correct |
420 ms |
48972 KB |
Output is correct |
5 |
Correct |
385 ms |
51144 KB |
Output is correct |
6 |
Correct |
391 ms |
52216 KB |
Output is correct |
7 |
Correct |
356 ms |
41820 KB |
Output is correct |
8 |
Correct |
433 ms |
52304 KB |
Output is correct |
9 |
Correct |
365 ms |
44884 KB |
Output is correct |
10 |
Correct |
380 ms |
44624 KB |
Output is correct |
11 |
Correct |
425 ms |
48980 KB |
Output is correct |
12 |
Correct |
388 ms |
48208 KB |
Output is correct |
13 |
Correct |
460 ms |
52232 KB |
Output is correct |
14 |
Correct |
289 ms |
48000 KB |
Output is correct |
15 |
Correct |
411 ms |
52072 KB |
Output is correct |
16 |
Correct |
316 ms |
47956 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
9820 KB |
Output is correct |
2 |
Correct |
2 ms |
9820 KB |
Output is correct |
3 |
Correct |
2 ms |
9912 KB |
Output is correct |
4 |
Correct |
5 ms |
10076 KB |
Output is correct |
5 |
Correct |
4 ms |
10180 KB |
Output is correct |
6 |
Correct |
5 ms |
9968 KB |
Output is correct |
7 |
Correct |
4 ms |
9964 KB |
Output is correct |
8 |
Correct |
5 ms |
10076 KB |
Output is correct |
9 |
Correct |
4 ms |
10076 KB |
Output is correct |
10 |
Correct |
5 ms |
10076 KB |
Output is correct |
11 |
Correct |
4 ms |
10076 KB |
Output is correct |
12 |
Correct |
4 ms |
10076 KB |
Output is correct |
13 |
Correct |
4 ms |
10076 KB |
Output is correct |
14 |
Correct |
428 ms |
44468 KB |
Output is correct |
15 |
Correct |
332 ms |
44104 KB |
Output is correct |
16 |
Correct |
75 ms |
19868 KB |
Output is correct |
17 |
Correct |
349 ms |
44836 KB |
Output is correct |
18 |
Correct |
339 ms |
44880 KB |
Output is correct |
19 |
Correct |
323 ms |
43212 KB |
Output is correct |
20 |
Correct |
342 ms |
43276 KB |
Output is correct |
21 |
Correct |
113 ms |
23380 KB |
Output is correct |
22 |
Correct |
462 ms |
52564 KB |
Output is correct |
23 |
Correct |
427 ms |
52584 KB |
Output is correct |
24 |
Correct |
445 ms |
52460 KB |
Output is correct |
25 |
Correct |
432 ms |
52560 KB |
Output is correct |
26 |
Correct |
428 ms |
46100 KB |
Output is correct |
27 |
Correct |
446 ms |
46160 KB |
Output is correct |
28 |
Correct |
442 ms |
49488 KB |
Output is correct |
29 |
Correct |
456 ms |
49412 KB |
Output is correct |
30 |
Correct |
329 ms |
47208 KB |
Output is correct |
31 |
Correct |
376 ms |
47304 KB |
Output is correct |
32 |
Correct |
462 ms |
50380 KB |
Output is correct |
33 |
Correct |
408 ms |
50380 KB |
Output is correct |
34 |
Correct |
395 ms |
36432 KB |
Output is correct |
35 |
Correct |
444 ms |
45568 KB |
Output is correct |
36 |
Correct |
212 ms |
27732 KB |
Output is correct |
37 |
Correct |
420 ms |
48972 KB |
Output is correct |
38 |
Correct |
385 ms |
51144 KB |
Output is correct |
39 |
Correct |
391 ms |
52216 KB |
Output is correct |
40 |
Correct |
356 ms |
41820 KB |
Output is correct |
41 |
Correct |
433 ms |
52304 KB |
Output is correct |
42 |
Correct |
365 ms |
44884 KB |
Output is correct |
43 |
Correct |
380 ms |
44624 KB |
Output is correct |
44 |
Correct |
425 ms |
48980 KB |
Output is correct |
45 |
Correct |
388 ms |
48208 KB |
Output is correct |
46 |
Correct |
460 ms |
52232 KB |
Output is correct |
47 |
Correct |
289 ms |
48000 KB |
Output is correct |
48 |
Correct |
411 ms |
52072 KB |
Output is correct |
49 |
Correct |
316 ms |
47956 KB |
Output is correct |
50 |
Correct |
525 ms |
52356 KB |
Output is correct |
51 |
Correct |
446 ms |
46160 KB |
Output is correct |
52 |
Correct |
454 ms |
49264 KB |
Output is correct |
53 |
Correct |
356 ms |
47312 KB |
Output is correct |
54 |
Correct |
395 ms |
50380 KB |
Output is correct |
55 |
Correct |
449 ms |
52308 KB |
Output is correct |
56 |
Correct |
328 ms |
47952 KB |
Output is correct |
57 |
Correct |
360 ms |
44916 KB |
Output is correct |
58 |
Correct |
335 ms |
44880 KB |
Output is correct |
59 |
Correct |
475 ms |
50260 KB |
Output is correct |
60 |
Correct |
363 ms |
48112 KB |
Output is correct |
61 |
Correct |
320 ms |
47212 KB |
Output is correct |
62 |
Correct |
355 ms |
47344 KB |
Output is correct |
63 |
Correct |
430 ms |
50380 KB |
Output is correct |
64 |
Correct |
421 ms |
46928 KB |
Output is correct |