// trans rights
#include <bits/extc++.h>
using namespace std;
using ll = long long;
using ull = unsigned long long;
#ifdef DEBUG
#define D(...) fprintf(stderr, __VA_ARGS__)
#else
#define D(...)
#endif
int N, Q;
int H[200069], A[200069], B[200069], answer[200069];
constexpr int NUKE = 1012345678;
struct Node
{
int l, r;
Node *lc, *rc;
int um_mn, um_mx;
int t_mn, t_mx, per;
Node(int l, int r) : l(l), r(r), lc(0), rc(0), um_mn(NUKE), um_mx(-NUKE), t_mn(NUKE), t_mx(-NUKE), per(-NUKE)
{
if (l != r)
{
int m = l + (r - l) / 2;
lc = new Node(l, m);
rc = new Node(m + 1, r);
}
}
void clean()
{
per = max(per, max(t_mx - um_mn, um_mx - t_mn));
if (lc)
{
lc->t_mn = min(lc->t_mn, t_mn);
rc->t_mn = min(rc->t_mn, t_mn);
lc->t_mx = max(lc->t_mx, t_mx);
rc->t_mx = max(rc->t_mx, t_mx);
}
t_mn = NUKE;
t_mx = -NUKE;
}
void unmask(int p, int x)
{
clean();
if (l == r)
{
um_mn = um_mx = x;
clean();
return;
}
if (p <= lc->r)
lc->unmask(p, x);
else
rc->unmask(p, x);
um_mn = min(lc->um_mn, rc->um_mn);
um_mx = max(lc->um_mx, rc->um_mx);
}
void mask(int p)
{
clean();
if (l == r)
{
um_mn = NUKE;
um_mx = -NUKE;
return;
}
if (p <= lc->r)
lc->mask(p);
else
rc->mask(p);
um_mn = min(lc->um_mn, rc->um_mn);
um_mx = max(lc->um_mx, rc->um_mx);
}
void update(int ql, int qr, int x)
{
clean();
if (qr < l or ql > r)
return;
if (ql <= l and qr >= r)
{
t_mn = t_mx = x;
clean();
return;
}
lc->update(ql, qr, x);
rc->update(ql, qr, x);
per = max(per, max(lc->per, rc->per));
}
int query(int ql, int qr)
{
clean();
if (qr < l or ql > r)
return -NUKE;
if (ql <= l and qr >= r)
return per;
return max(lc->query(ql, qr), rc->query(ql, qr));
}
};
int main(int argc, const char *argv[])
{
scanf("%d", &N);
vector<pair<int, int>> events;
vector<tuple<int, int, int>> queries;
for (int i = 1; i <= N; i++)
{
int h, a, b;
scanf("%d%d%d", &h, &a, &b);
H[i] = h, A[i] = a, B[i] = b;
events.push_back({i + A[i], i});
events.push_back({i + B[i] + 1, i});
}
scanf("%d", &Q);
for (int k = 0; k < Q; k++)
{
int l, r;
scanf("%d%d", &l, &r);
queries.push_back({r, l, k});
}
sort(events.begin(), events.end());
sort(queries.begin(), queries.end());
int next_event = 0;
int next_rock = 0;
Node *root = new Node(1, N);
for (auto &q : queries)
{
auto [r, l, qid] = q;
while (next_rock <= r)
{
while (next_event < events.size() and events[next_event].first <= next_rock)
{
auto [p, i] = events[next_event];
D("e: %d %d\n", i, p);
if (i + B[i] + 1 == p)
{
root->mask(i);
}else{
root->unmask(i, H[i]);
}
next_event++;
}
int a = next_rock - B[next_rock];
int b = next_rock - A[next_rock];
D("u: %d %d %d\n", next_rock, a, b);
root->update(a, b, H[next_rock]);
next_rock++;
}
D("------\n");
answer[qid] = root->query(l, r);
if (answer[qid] < 0)
answer[qid] = -1;
}
for (int qid = 0; qid < Q; qid++)
printf("%d\n", answer[qid]);
return 0;
}
Compilation message
antennas.cpp: In function 'int main(int, const char**)':
antennas.cpp:138:31: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
138 | while (next_event < events.size() and events[next_event].first <= next_rock)
| ~~~~~~~~~~~^~~~~~~~~~~~~~~
antennas.cpp:108:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
108 | scanf("%d", &N);
| ~~~~~^~~~~~~~~~
antennas.cpp:114:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
114 | scanf("%d%d%d", &h, &a, &b);
| ~~~~~^~~~~~~~~~~~~~~~~~~~~~
antennas.cpp:120:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
120 | scanf("%d", &Q);
| ~~~~~^~~~~~~~~~
antennas.cpp:124:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
124 | scanf("%d%d", &l, &r);
| ~~~~~^~~~~~~~~~~~~~~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
340 KB |
Output is correct |
2 |
Correct |
1 ms |
340 KB |
Output is correct |
3 |
Correct |
1 ms |
340 KB |
Output is correct |
4 |
Correct |
1 ms |
340 KB |
Output is correct |
5 |
Correct |
1 ms |
340 KB |
Output is correct |
6 |
Correct |
1 ms |
340 KB |
Output is correct |
7 |
Correct |
1 ms |
340 KB |
Output is correct |
8 |
Correct |
1 ms |
340 KB |
Output is correct |
9 |
Correct |
1 ms |
340 KB |
Output is correct |
10 |
Correct |
1 ms |
316 KB |
Output is correct |
11 |
Correct |
1 ms |
340 KB |
Output is correct |
12 |
Correct |
1 ms |
312 KB |
Output is correct |
13 |
Correct |
1 ms |
340 KB |
Output is correct |
14 |
Correct |
1 ms |
340 KB |
Output is correct |
15 |
Correct |
1 ms |
340 KB |
Output is correct |
16 |
Correct |
1 ms |
340 KB |
Output is correct |
17 |
Correct |
1 ms |
340 KB |
Output is correct |
18 |
Correct |
1 ms |
340 KB |
Output is correct |
19 |
Correct |
1 ms |
340 KB |
Output is correct |
20 |
Correct |
1 ms |
340 KB |
Output is correct |
21 |
Correct |
1 ms |
340 KB |
Output is correct |
22 |
Correct |
1 ms |
340 KB |
Output is correct |
23 |
Correct |
1 ms |
320 KB |
Output is correct |
24 |
Correct |
1 ms |
340 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
340 KB |
Output is correct |
2 |
Correct |
1 ms |
340 KB |
Output is correct |
3 |
Correct |
1 ms |
340 KB |
Output is correct |
4 |
Correct |
1 ms |
340 KB |
Output is correct |
5 |
Correct |
1 ms |
340 KB |
Output is correct |
6 |
Correct |
1 ms |
340 KB |
Output is correct |
7 |
Correct |
1 ms |
340 KB |
Output is correct |
8 |
Correct |
1 ms |
340 KB |
Output is correct |
9 |
Correct |
1 ms |
340 KB |
Output is correct |
10 |
Correct |
1 ms |
316 KB |
Output is correct |
11 |
Correct |
1 ms |
340 KB |
Output is correct |
12 |
Correct |
1 ms |
312 KB |
Output is correct |
13 |
Correct |
1 ms |
340 KB |
Output is correct |
14 |
Correct |
1 ms |
340 KB |
Output is correct |
15 |
Correct |
1 ms |
340 KB |
Output is correct |
16 |
Correct |
1 ms |
340 KB |
Output is correct |
17 |
Correct |
1 ms |
340 KB |
Output is correct |
18 |
Correct |
1 ms |
340 KB |
Output is correct |
19 |
Correct |
1 ms |
340 KB |
Output is correct |
20 |
Correct |
1 ms |
340 KB |
Output is correct |
21 |
Correct |
1 ms |
340 KB |
Output is correct |
22 |
Correct |
1 ms |
340 KB |
Output is correct |
23 |
Correct |
1 ms |
320 KB |
Output is correct |
24 |
Correct |
1 ms |
340 KB |
Output is correct |
25 |
Correct |
93 ms |
5164 KB |
Output is correct |
26 |
Correct |
13 ms |
1068 KB |
Output is correct |
27 |
Correct |
132 ms |
7236 KB |
Output is correct |
28 |
Correct |
138 ms |
7272 KB |
Output is correct |
29 |
Correct |
93 ms |
5268 KB |
Output is correct |
30 |
Correct |
92 ms |
4972 KB |
Output is correct |
31 |
Correct |
109 ms |
6552 KB |
Output is correct |
32 |
Correct |
134 ms |
7296 KB |
Output is correct |
33 |
Correct |
119 ms |
6716 KB |
Output is correct |
34 |
Correct |
65 ms |
3796 KB |
Output is correct |
35 |
Correct |
128 ms |
7144 KB |
Output is correct |
36 |
Correct |
132 ms |
7348 KB |
Output is correct |
37 |
Correct |
76 ms |
3860 KB |
Output is correct |
38 |
Correct |
131 ms |
6372 KB |
Output is correct |
39 |
Correct |
20 ms |
1384 KB |
Output is correct |
40 |
Correct |
132 ms |
6268 KB |
Output is correct |
41 |
Correct |
99 ms |
4916 KB |
Output is correct |
42 |
Correct |
131 ms |
6260 KB |
Output is correct |
43 |
Correct |
44 ms |
2532 KB |
Output is correct |
44 |
Correct |
132 ms |
6364 KB |
Output is correct |
45 |
Correct |
24 ms |
1624 KB |
Output is correct |
46 |
Correct |
137 ms |
6364 KB |
Output is correct |
47 |
Correct |
36 ms |
1996 KB |
Output is correct |
48 |
Correct |
132 ms |
6280 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
258 ms |
31820 KB |
Output is correct |
2 |
Correct |
287 ms |
35420 KB |
Output is correct |
3 |
Correct |
189 ms |
24880 KB |
Output is correct |
4 |
Correct |
308 ms |
35288 KB |
Output is correct |
5 |
Correct |
119 ms |
16388 KB |
Output is correct |
6 |
Correct |
307 ms |
35284 KB |
Output is correct |
7 |
Correct |
262 ms |
30768 KB |
Output is correct |
8 |
Correct |
297 ms |
35308 KB |
Output is correct |
9 |
Correct |
31 ms |
5824 KB |
Output is correct |
10 |
Correct |
311 ms |
35400 KB |
Output is correct |
11 |
Correct |
177 ms |
22184 KB |
Output is correct |
12 |
Correct |
310 ms |
35360 KB |
Output is correct |
13 |
Correct |
195 ms |
35232 KB |
Output is correct |
14 |
Correct |
182 ms |
35216 KB |
Output is correct |
15 |
Correct |
182 ms |
35140 KB |
Output is correct |
16 |
Correct |
169 ms |
35224 KB |
Output is correct |
17 |
Correct |
201 ms |
35248 KB |
Output is correct |
18 |
Correct |
179 ms |
35260 KB |
Output is correct |
19 |
Correct |
186 ms |
35588 KB |
Output is correct |
20 |
Correct |
185 ms |
35244 KB |
Output is correct |
21 |
Correct |
178 ms |
35232 KB |
Output is correct |
22 |
Correct |
181 ms |
35264 KB |
Output is correct |
23 |
Correct |
187 ms |
35248 KB |
Output is correct |
24 |
Correct |
161 ms |
35224 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
340 KB |
Output is correct |
2 |
Correct |
1 ms |
340 KB |
Output is correct |
3 |
Correct |
1 ms |
340 KB |
Output is correct |
4 |
Correct |
1 ms |
340 KB |
Output is correct |
5 |
Correct |
1 ms |
340 KB |
Output is correct |
6 |
Correct |
1 ms |
340 KB |
Output is correct |
7 |
Correct |
1 ms |
340 KB |
Output is correct |
8 |
Correct |
1 ms |
340 KB |
Output is correct |
9 |
Correct |
1 ms |
340 KB |
Output is correct |
10 |
Correct |
1 ms |
316 KB |
Output is correct |
11 |
Correct |
1 ms |
340 KB |
Output is correct |
12 |
Correct |
1 ms |
312 KB |
Output is correct |
13 |
Correct |
1 ms |
340 KB |
Output is correct |
14 |
Correct |
1 ms |
340 KB |
Output is correct |
15 |
Correct |
1 ms |
340 KB |
Output is correct |
16 |
Correct |
1 ms |
340 KB |
Output is correct |
17 |
Correct |
1 ms |
340 KB |
Output is correct |
18 |
Correct |
1 ms |
340 KB |
Output is correct |
19 |
Correct |
1 ms |
340 KB |
Output is correct |
20 |
Correct |
1 ms |
340 KB |
Output is correct |
21 |
Correct |
1 ms |
340 KB |
Output is correct |
22 |
Correct |
1 ms |
340 KB |
Output is correct |
23 |
Correct |
1 ms |
320 KB |
Output is correct |
24 |
Correct |
1 ms |
340 KB |
Output is correct |
25 |
Correct |
93 ms |
5164 KB |
Output is correct |
26 |
Correct |
13 ms |
1068 KB |
Output is correct |
27 |
Correct |
132 ms |
7236 KB |
Output is correct |
28 |
Correct |
138 ms |
7272 KB |
Output is correct |
29 |
Correct |
93 ms |
5268 KB |
Output is correct |
30 |
Correct |
92 ms |
4972 KB |
Output is correct |
31 |
Correct |
109 ms |
6552 KB |
Output is correct |
32 |
Correct |
134 ms |
7296 KB |
Output is correct |
33 |
Correct |
119 ms |
6716 KB |
Output is correct |
34 |
Correct |
65 ms |
3796 KB |
Output is correct |
35 |
Correct |
128 ms |
7144 KB |
Output is correct |
36 |
Correct |
132 ms |
7348 KB |
Output is correct |
37 |
Correct |
76 ms |
3860 KB |
Output is correct |
38 |
Correct |
131 ms |
6372 KB |
Output is correct |
39 |
Correct |
20 ms |
1384 KB |
Output is correct |
40 |
Correct |
132 ms |
6268 KB |
Output is correct |
41 |
Correct |
99 ms |
4916 KB |
Output is correct |
42 |
Correct |
131 ms |
6260 KB |
Output is correct |
43 |
Correct |
44 ms |
2532 KB |
Output is correct |
44 |
Correct |
132 ms |
6364 KB |
Output is correct |
45 |
Correct |
24 ms |
1624 KB |
Output is correct |
46 |
Correct |
137 ms |
6364 KB |
Output is correct |
47 |
Correct |
36 ms |
1996 KB |
Output is correct |
48 |
Correct |
132 ms |
6280 KB |
Output is correct |
49 |
Correct |
258 ms |
31820 KB |
Output is correct |
50 |
Correct |
287 ms |
35420 KB |
Output is correct |
51 |
Correct |
189 ms |
24880 KB |
Output is correct |
52 |
Correct |
308 ms |
35288 KB |
Output is correct |
53 |
Correct |
119 ms |
16388 KB |
Output is correct |
54 |
Correct |
307 ms |
35284 KB |
Output is correct |
55 |
Correct |
262 ms |
30768 KB |
Output is correct |
56 |
Correct |
297 ms |
35308 KB |
Output is correct |
57 |
Correct |
31 ms |
5824 KB |
Output is correct |
58 |
Correct |
311 ms |
35400 KB |
Output is correct |
59 |
Correct |
177 ms |
22184 KB |
Output is correct |
60 |
Correct |
310 ms |
35360 KB |
Output is correct |
61 |
Correct |
195 ms |
35232 KB |
Output is correct |
62 |
Correct |
182 ms |
35216 KB |
Output is correct |
63 |
Correct |
182 ms |
35140 KB |
Output is correct |
64 |
Correct |
169 ms |
35224 KB |
Output is correct |
65 |
Correct |
201 ms |
35248 KB |
Output is correct |
66 |
Correct |
179 ms |
35260 KB |
Output is correct |
67 |
Correct |
186 ms |
35588 KB |
Output is correct |
68 |
Correct |
185 ms |
35244 KB |
Output is correct |
69 |
Correct |
178 ms |
35232 KB |
Output is correct |
70 |
Correct |
181 ms |
35264 KB |
Output is correct |
71 |
Correct |
187 ms |
35248 KB |
Output is correct |
72 |
Correct |
161 ms |
35224 KB |
Output is correct |
73 |
Correct |
500 ms |
37488 KB |
Output is correct |
74 |
Correct |
360 ms |
36016 KB |
Output is correct |
75 |
Correct |
458 ms |
32440 KB |
Output is correct |
76 |
Correct |
594 ms |
43056 KB |
Output is correct |
77 |
Correct |
285 ms |
21820 KB |
Output is correct |
78 |
Correct |
514 ms |
40456 KB |
Output is correct |
79 |
Correct |
541 ms |
38308 KB |
Output is correct |
80 |
Correct |
616 ms |
43084 KB |
Output is correct |
81 |
Correct |
201 ms |
12928 KB |
Output is correct |
82 |
Correct |
437 ms |
38960 KB |
Output is correct |
83 |
Correct |
425 ms |
29720 KB |
Output is correct |
84 |
Correct |
600 ms |
43032 KB |
Output is correct |
85 |
Correct |
359 ms |
38960 KB |
Output is correct |
86 |
Correct |
470 ms |
41748 KB |
Output is correct |
87 |
Correct |
228 ms |
36124 KB |
Output is correct |
88 |
Correct |
453 ms |
41812 KB |
Output is correct |
89 |
Correct |
428 ms |
39948 KB |
Output is correct |
90 |
Correct |
467 ms |
41748 KB |
Output is correct |
91 |
Correct |
275 ms |
37400 KB |
Output is correct |
92 |
Correct |
492 ms |
41776 KB |
Output is correct |
93 |
Correct |
228 ms |
36320 KB |
Output is correct |
94 |
Correct |
479 ms |
41740 KB |
Output is correct |
95 |
Correct |
260 ms |
36844 KB |
Output is correct |
96 |
Correct |
473 ms |
41852 KB |
Output is correct |