#include <bits/stdc++.h>
using namespace std;
#define int int64_t
const int Z = 1e5, INF = 1e18+1;
int n, q, wLim, dfsTimer, e[Z*2], w[Z], sub[Z], L[Z], R[Z];
vector<pair<int, int>> g[Z];
void dfs(int u, int p, int d) {
L[u] = dfsTimer;
if(u && size(g[u]) < 2) e[L[u] = dfsTimer++] = d;
for(auto [v, i] : g[u]) if(v != p) {
dfs(sub[i] = v, u, d + w[i]);
e[dfsTimer++] = d;
}
R[u] = dfsTimer-1;
}
int sL, sR, sV;
struct SegmentTree {
int l, r, add {}; array<int, 5> v {};
SegmentTree *L, *R;
SegmentTree(int lv, int rv) : l(lv), r(rv) {
if(r - l > 1) {
int m = (l + r) / 2;
L = new SegmentTree(l, m);
R = new SegmentTree(m, r);
pull();
} else
v = {e[l], -2 * e[l], -INF, -INF, -INF};
}
void pull() {
v = {
max(L->v[0], R->v[0]) + add,
max(L->v[1], R->v[1]) - add * 2,
max(max(L->v[2], R->v[2]), L->v[0] + R->v[1]) - add,
max(max(L->v[3], R->v[3]), L->v[1] + R->v[0]) - add,
max(max(L->v[4], R->v[4]), max(L->v[0] + R->v[3], L->v[2] + R->v[0]))
};
}
void rangeAdd(int lv, int rv, int val) {
sL = lv, sR = rv + 1, sV = val;
rangeAdd();
}
void rangeAdd() {
if(sL <= l && r <= sR) {
add += sV;
v[0] += sV;
v[1] -= sV * 2;
v[2] -= sV;
v[3] -= sV;
return;
}
if(sR <= l || r <= sL) return;
L->rangeAdd();
R->rangeAdd();
pull();
}
int query() {
return max(v[0], v[4]);
}
};
signed main() {
ios_base::sync_with_stdio(0); cin.tie(0);
cin >> n >> q >> wLim;
for(int i = 0; i < n - 1; ++i) {
int u, v;
cin >> u >> v >> w[i];
--u, --v;
g[u].emplace_back(v, i);
g[v].emplace_back(u, i);
}
dfs(0, 0, 0);
SegmentTree *st = new SegmentTree(0, dfsTimer);
for(int last {}; q--; ) {
int qD, qE; cin >> qD >> qE;
(qD += last) %= n - 1;
(qE += last) %= wLim;
st->rangeAdd(L[sub[qD]], R[sub[qD]], qE - w[qD]);
w[qD] = qE;
cout << (last = st->query()) << '\n';
}
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
2644 KB |
Output is correct |
2 |
Correct |
2 ms |
2684 KB |
Output is correct |
3 |
Correct |
2 ms |
2644 KB |
Output is correct |
4 |
Correct |
2 ms |
2644 KB |
Output is correct |
5 |
Correct |
2 ms |
2644 KB |
Output is correct |
6 |
Correct |
2 ms |
2644 KB |
Output is correct |
7 |
Correct |
2 ms |
2680 KB |
Output is correct |
8 |
Correct |
2 ms |
2676 KB |
Output is correct |
9 |
Correct |
2 ms |
2644 KB |
Output is correct |
10 |
Correct |
3 ms |
2684 KB |
Output is correct |
11 |
Correct |
2 ms |
2644 KB |
Output is correct |
12 |
Correct |
2 ms |
2680 KB |
Output is correct |
13 |
Correct |
2 ms |
2644 KB |
Output is correct |
14 |
Correct |
2 ms |
2644 KB |
Output is correct |
15 |
Correct |
2 ms |
2764 KB |
Output is correct |
16 |
Correct |
2 ms |
2644 KB |
Output is correct |
17 |
Correct |
2 ms |
2644 KB |
Output is correct |
18 |
Correct |
2 ms |
2684 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
2644 KB |
Output is correct |
2 |
Correct |
2 ms |
2684 KB |
Output is correct |
3 |
Correct |
2 ms |
2644 KB |
Output is correct |
4 |
Correct |
2 ms |
2644 KB |
Output is correct |
5 |
Correct |
2 ms |
2644 KB |
Output is correct |
6 |
Correct |
2 ms |
2644 KB |
Output is correct |
7 |
Correct |
2 ms |
2680 KB |
Output is correct |
8 |
Correct |
2 ms |
2676 KB |
Output is correct |
9 |
Correct |
2 ms |
2644 KB |
Output is correct |
10 |
Correct |
3 ms |
2684 KB |
Output is correct |
11 |
Correct |
2 ms |
2644 KB |
Output is correct |
12 |
Correct |
2 ms |
2680 KB |
Output is correct |
13 |
Correct |
2 ms |
2644 KB |
Output is correct |
14 |
Correct |
2 ms |
2644 KB |
Output is correct |
15 |
Correct |
2 ms |
2764 KB |
Output is correct |
16 |
Correct |
2 ms |
2644 KB |
Output is correct |
17 |
Correct |
2 ms |
2644 KB |
Output is correct |
18 |
Correct |
2 ms |
2684 KB |
Output is correct |
19 |
Correct |
4 ms |
3156 KB |
Output is correct |
20 |
Correct |
6 ms |
3028 KB |
Output is correct |
21 |
Correct |
5 ms |
3028 KB |
Output is correct |
22 |
Correct |
5 ms |
3028 KB |
Output is correct |
23 |
Correct |
10 ms |
4736 KB |
Output is correct |
24 |
Correct |
8 ms |
4564 KB |
Output is correct |
25 |
Correct |
7 ms |
4660 KB |
Output is correct |
26 |
Correct |
9 ms |
4484 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
2644 KB |
Output is correct |
2 |
Correct |
2 ms |
2680 KB |
Output is correct |
3 |
Correct |
2 ms |
2644 KB |
Output is correct |
4 |
Correct |
8 ms |
2920 KB |
Output is correct |
5 |
Correct |
32 ms |
3788 KB |
Output is correct |
6 |
Correct |
2 ms |
2644 KB |
Output is correct |
7 |
Correct |
2 ms |
2944 KB |
Output is correct |
8 |
Correct |
2 ms |
2900 KB |
Output is correct |
9 |
Correct |
4 ms |
2900 KB |
Output is correct |
10 |
Correct |
9 ms |
3156 KB |
Output is correct |
11 |
Correct |
42 ms |
4196 KB |
Output is correct |
12 |
Correct |
5 ms |
5076 KB |
Output is correct |
13 |
Correct |
5 ms |
5076 KB |
Output is correct |
14 |
Correct |
5 ms |
5076 KB |
Output is correct |
15 |
Correct |
16 ms |
5396 KB |
Output is correct |
16 |
Correct |
52 ms |
6556 KB |
Output is correct |
17 |
Correct |
54 ms |
50816 KB |
Output is correct |
18 |
Correct |
54 ms |
50776 KB |
Output is correct |
19 |
Correct |
55 ms |
50760 KB |
Output is correct |
20 |
Correct |
82 ms |
51056 KB |
Output is correct |
21 |
Correct |
178 ms |
52388 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
3028 KB |
Output is correct |
2 |
Correct |
7 ms |
3196 KB |
Output is correct |
3 |
Correct |
24 ms |
3664 KB |
Output is correct |
4 |
Correct |
47 ms |
4424 KB |
Output is correct |
5 |
Correct |
9 ms |
6612 KB |
Output is correct |
6 |
Correct |
14 ms |
6788 KB |
Output is correct |
7 |
Correct |
36 ms |
7324 KB |
Output is correct |
8 |
Correct |
72 ms |
8088 KB |
Output is correct |
9 |
Correct |
31 ms |
22432 KB |
Output is correct |
10 |
Correct |
45 ms |
22552 KB |
Output is correct |
11 |
Correct |
84 ms |
23212 KB |
Output is correct |
12 |
Correct |
118 ms |
24164 KB |
Output is correct |
13 |
Correct |
56 ms |
42204 KB |
Output is correct |
14 |
Correct |
68 ms |
42280 KB |
Output is correct |
15 |
Correct |
114 ms |
42964 KB |
Output is correct |
16 |
Correct |
155 ms |
43856 KB |
Output is correct |
17 |
Correct |
164 ms |
43524 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
229 ms |
44512 KB |
Output is correct |
2 |
Correct |
242 ms |
44344 KB |
Output is correct |
3 |
Correct |
229 ms |
44516 KB |
Output is correct |
4 |
Correct |
232 ms |
44492 KB |
Output is correct |
5 |
Correct |
213 ms |
45384 KB |
Output is correct |
6 |
Correct |
214 ms |
49804 KB |
Output is correct |
7 |
Correct |
236 ms |
45236 KB |
Output is correct |
8 |
Correct |
236 ms |
45140 KB |
Output is correct |
9 |
Correct |
237 ms |
45124 KB |
Output is correct |
10 |
Correct |
235 ms |
45328 KB |
Output is correct |
11 |
Correct |
234 ms |
46116 KB |
Output is correct |
12 |
Correct |
245 ms |
49980 KB |
Output is correct |
13 |
Correct |
215 ms |
42276 KB |
Output is correct |
14 |
Correct |
233 ms |
42472 KB |
Output is correct |
15 |
Correct |
233 ms |
42368 KB |
Output is correct |
16 |
Correct |
217 ms |
42524 KB |
Output is correct |
17 |
Correct |
236 ms |
43692 KB |
Output is correct |
18 |
Correct |
213 ms |
48804 KB |
Output is correct |
19 |
Correct |
214 ms |
42456 KB |
Output is correct |
20 |
Correct |
242 ms |
42284 KB |
Output is correct |
21 |
Correct |
218 ms |
42404 KB |
Output is correct |
22 |
Correct |
225 ms |
42512 KB |
Output is correct |
23 |
Correct |
238 ms |
43700 KB |
Output is correct |
24 |
Correct |
217 ms |
48832 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
2644 KB |
Output is correct |
2 |
Correct |
2 ms |
2684 KB |
Output is correct |
3 |
Correct |
2 ms |
2644 KB |
Output is correct |
4 |
Correct |
2 ms |
2644 KB |
Output is correct |
5 |
Correct |
2 ms |
2644 KB |
Output is correct |
6 |
Correct |
2 ms |
2644 KB |
Output is correct |
7 |
Correct |
2 ms |
2680 KB |
Output is correct |
8 |
Correct |
2 ms |
2676 KB |
Output is correct |
9 |
Correct |
2 ms |
2644 KB |
Output is correct |
10 |
Correct |
3 ms |
2684 KB |
Output is correct |
11 |
Correct |
2 ms |
2644 KB |
Output is correct |
12 |
Correct |
2 ms |
2680 KB |
Output is correct |
13 |
Correct |
2 ms |
2644 KB |
Output is correct |
14 |
Correct |
2 ms |
2644 KB |
Output is correct |
15 |
Correct |
2 ms |
2764 KB |
Output is correct |
16 |
Correct |
2 ms |
2644 KB |
Output is correct |
17 |
Correct |
2 ms |
2644 KB |
Output is correct |
18 |
Correct |
2 ms |
2684 KB |
Output is correct |
19 |
Correct |
4 ms |
3156 KB |
Output is correct |
20 |
Correct |
6 ms |
3028 KB |
Output is correct |
21 |
Correct |
5 ms |
3028 KB |
Output is correct |
22 |
Correct |
5 ms |
3028 KB |
Output is correct |
23 |
Correct |
10 ms |
4736 KB |
Output is correct |
24 |
Correct |
8 ms |
4564 KB |
Output is correct |
25 |
Correct |
7 ms |
4660 KB |
Output is correct |
26 |
Correct |
9 ms |
4484 KB |
Output is correct |
27 |
Correct |
2 ms |
2644 KB |
Output is correct |
28 |
Correct |
2 ms |
2680 KB |
Output is correct |
29 |
Correct |
2 ms |
2644 KB |
Output is correct |
30 |
Correct |
8 ms |
2920 KB |
Output is correct |
31 |
Correct |
32 ms |
3788 KB |
Output is correct |
32 |
Correct |
2 ms |
2644 KB |
Output is correct |
33 |
Correct |
2 ms |
2944 KB |
Output is correct |
34 |
Correct |
2 ms |
2900 KB |
Output is correct |
35 |
Correct |
4 ms |
2900 KB |
Output is correct |
36 |
Correct |
9 ms |
3156 KB |
Output is correct |
37 |
Correct |
42 ms |
4196 KB |
Output is correct |
38 |
Correct |
5 ms |
5076 KB |
Output is correct |
39 |
Correct |
5 ms |
5076 KB |
Output is correct |
40 |
Correct |
5 ms |
5076 KB |
Output is correct |
41 |
Correct |
16 ms |
5396 KB |
Output is correct |
42 |
Correct |
52 ms |
6556 KB |
Output is correct |
43 |
Correct |
54 ms |
50816 KB |
Output is correct |
44 |
Correct |
54 ms |
50776 KB |
Output is correct |
45 |
Correct |
55 ms |
50760 KB |
Output is correct |
46 |
Correct |
82 ms |
51056 KB |
Output is correct |
47 |
Correct |
178 ms |
52388 KB |
Output is correct |
48 |
Correct |
3 ms |
3028 KB |
Output is correct |
49 |
Correct |
7 ms |
3196 KB |
Output is correct |
50 |
Correct |
24 ms |
3664 KB |
Output is correct |
51 |
Correct |
47 ms |
4424 KB |
Output is correct |
52 |
Correct |
9 ms |
6612 KB |
Output is correct |
53 |
Correct |
14 ms |
6788 KB |
Output is correct |
54 |
Correct |
36 ms |
7324 KB |
Output is correct |
55 |
Correct |
72 ms |
8088 KB |
Output is correct |
56 |
Correct |
31 ms |
22432 KB |
Output is correct |
57 |
Correct |
45 ms |
22552 KB |
Output is correct |
58 |
Correct |
84 ms |
23212 KB |
Output is correct |
59 |
Correct |
118 ms |
24164 KB |
Output is correct |
60 |
Correct |
56 ms |
42204 KB |
Output is correct |
61 |
Correct |
68 ms |
42280 KB |
Output is correct |
62 |
Correct |
114 ms |
42964 KB |
Output is correct |
63 |
Correct |
155 ms |
43856 KB |
Output is correct |
64 |
Correct |
164 ms |
43524 KB |
Output is correct |
65 |
Correct |
229 ms |
44512 KB |
Output is correct |
66 |
Correct |
242 ms |
44344 KB |
Output is correct |
67 |
Correct |
229 ms |
44516 KB |
Output is correct |
68 |
Correct |
232 ms |
44492 KB |
Output is correct |
69 |
Correct |
213 ms |
45384 KB |
Output is correct |
70 |
Correct |
214 ms |
49804 KB |
Output is correct |
71 |
Correct |
236 ms |
45236 KB |
Output is correct |
72 |
Correct |
236 ms |
45140 KB |
Output is correct |
73 |
Correct |
237 ms |
45124 KB |
Output is correct |
74 |
Correct |
235 ms |
45328 KB |
Output is correct |
75 |
Correct |
234 ms |
46116 KB |
Output is correct |
76 |
Correct |
245 ms |
49980 KB |
Output is correct |
77 |
Correct |
215 ms |
42276 KB |
Output is correct |
78 |
Correct |
233 ms |
42472 KB |
Output is correct |
79 |
Correct |
233 ms |
42368 KB |
Output is correct |
80 |
Correct |
217 ms |
42524 KB |
Output is correct |
81 |
Correct |
236 ms |
43692 KB |
Output is correct |
82 |
Correct |
213 ms |
48804 KB |
Output is correct |
83 |
Correct |
214 ms |
42456 KB |
Output is correct |
84 |
Correct |
242 ms |
42284 KB |
Output is correct |
85 |
Correct |
218 ms |
42404 KB |
Output is correct |
86 |
Correct |
225 ms |
42512 KB |
Output is correct |
87 |
Correct |
238 ms |
43700 KB |
Output is correct |
88 |
Correct |
217 ms |
48832 KB |
Output is correct |
89 |
Correct |
221 ms |
43388 KB |
Output is correct |
90 |
Correct |
229 ms |
43580 KB |
Output is correct |
91 |
Correct |
237 ms |
44056 KB |
Output is correct |
92 |
Correct |
238 ms |
43284 KB |
Output is correct |
93 |
Correct |
236 ms |
44160 KB |
Output is correct |
94 |
Correct |
220 ms |
41676 KB |
Output is correct |
95 |
Correct |
214 ms |
39820 KB |
Output is correct |
96 |
Correct |
195 ms |
38812 KB |
Output is correct |
97 |
Correct |
227 ms |
39600 KB |
Output is correct |
98 |
Correct |
186 ms |
41500 KB |
Output is correct |
99 |
Correct |
196 ms |
39472 KB |
Output is correct |
100 |
Correct |
255 ms |
39368 KB |
Output is correct |