#include <bits/stdc++.h>
#define pb push_back
#define mp make_pair
#define F first
#define S second
#define all(x) x.begin(), x.end()
#define sortvec(x) sort(all(x))
#define compress(x) x.erase(unique(all(x)), x.end())
using namespace std;
typedef long long LL;
typedef pair<int, int> pii;
typedef pair<LL, LL> pll;
typedef pair<int, LL> pil;
typedef pair<LL, int> pli;
const LL llinf=987654321987654321;
const int inf=2000000000;
struct SEGMENT_TREE{
LL tree[800010], h[800010], lazy[800010];
void init(){
for(int i=1; i<800000; i++){
tree[i]=lazy[i]=-llinf;
h[i]=llinf;
}
}
void propogate(int point){
lazy[point*2]=max(lazy[point], lazy[point*2]);
lazy[point*2+1]=max(lazy[point], lazy[point*2+1]);
tree[point*2]=max(tree[point*2], lazy[point*2]-h[point*2]);
tree[point*2+1]=max(tree[point*2+1], lazy[point*2+1]-h[point*2+1]);
lazy[point]=-llinf;
}
void update(int point, int s, int e, int num, LL qu){
if(s==e){
h[point]=qu;
lazy[point]=-llinf;
return;
}
propogate(point);
int mid=(s+e)/2;
if(num<=mid)update(point*2, s, mid, num, qu);
else update(point*2+1, mid+1, e, num, qu);
tree[point]=max(tree[point*2], tree[point*2+1]);
h[point]=min(h[point*2], h[point*2+1]);
}
void alter(int point, int s, int e, int a, int b, LL qu){
if(e<a||s>b)return;
if(a<=s&&e<=b){
lazy[point]=max(lazy[point], qu);
tree[point]=max(tree[point], qu-h[point]);
return;
}
int mid=(s+e)/2;
propogate(point);
alter(point*2, s, mid, a, b, qu);
alter(point*2+1, mid+1, e, a, b, qu);
tree[point]=max(tree[point*2], tree[point*2+1]);
}
LL query(int point, int s, int e, int a, int b){
if(e<a||s>b)return -llinf;
if(a<=s&&e<=b)return tree[point];
propogate(point);
int mid=(s+e)/2;
return max(query(point*2, s, mid, a, b), query(point*2+1, mid+1, e, a, b));
}
}seg;
int n, q;
pii range[200010];
pii query[200010];
LL ans[200010], h[200010];
vector<pii> qu[200010], upd[200010];
void solve(){
for(int i=1; i<=n; i++){
qu[i].clear();
upd[i].clear();
}
seg.init();
for(int i=1; i<=n; i++){
int t1=min(i+range[i].F, n+1);
int t2=min(i+range[i].S, n)+1;
upd[t1].pb(mp(i, 1));
upd[t2].pb(mp(i, 0));
}
for(int i=1; i<=q; i++)qu[query[i].S].pb(mp(query[i].F, i));
for(int i=1; i<=n; i++){
for(auto j:upd[i]){
if(j.S)seg.update(1, 1, n, j.F, h[j.F]);
else seg.update(1, 1, n, j.F, llinf);
}
if(i-range[i].F>=1){
seg.alter(1, 1, n, max(1, i-range[i].S), i-range[i].F, h[i]);
}
for(auto j:qu[i]){
//printf("query %d : %lld\n", j.S, seg.query(1, 1, n, j.F, i));
ans[j.S]=max(ans[j.S], seg.query(1, 1, n, j.F, i));
}
}
}
int main(){
scanf("%d", &n);
for(int i=1; i<=n; i++){
scanf("%lld %d %d", &h[i], &range[i].F, &range[i].S);
}
scanf("%d", &q);
for(int i=1; i<=q; i++){
scanf("%d %d", &query[i].F, &query[i].S);
ans[i]=-1;
}
solve();
for(int i=1; i<=n; i++)h[i]=1000000000-h[i];
solve();
for(int i=1; i<=q; i++)printf("%lld\n", ans[i]);
}
Compilation message
antennas.cpp: In function 'int main()':
antennas.cpp:102:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
scanf("%d", &n);
~~~~~^~~~~~~~~~
antennas.cpp:104:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
scanf("%lld %d %d", &h[i], &range[i].F, &range[i].S);
~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
antennas.cpp:106:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
scanf("%d", &q);
~~~~~^~~~~~~~~~
antennas.cpp:108:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
scanf("%d %d", &query[i].F, &query[i].S);
~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
22 ms |
28536 KB |
Output is correct |
2 |
Correct |
24 ms |
28536 KB |
Output is correct |
3 |
Correct |
23 ms |
28540 KB |
Output is correct |
4 |
Correct |
23 ms |
28536 KB |
Output is correct |
5 |
Correct |
22 ms |
28536 KB |
Output is correct |
6 |
Correct |
22 ms |
28536 KB |
Output is correct |
7 |
Correct |
22 ms |
28536 KB |
Output is correct |
8 |
Correct |
22 ms |
28536 KB |
Output is correct |
9 |
Correct |
23 ms |
28536 KB |
Output is correct |
10 |
Correct |
22 ms |
28536 KB |
Output is correct |
11 |
Correct |
22 ms |
28536 KB |
Output is correct |
12 |
Correct |
23 ms |
28536 KB |
Output is correct |
13 |
Correct |
22 ms |
28536 KB |
Output is correct |
14 |
Correct |
23 ms |
28536 KB |
Output is correct |
15 |
Correct |
22 ms |
28536 KB |
Output is correct |
16 |
Correct |
22 ms |
28536 KB |
Output is correct |
17 |
Correct |
22 ms |
28536 KB |
Output is correct |
18 |
Correct |
23 ms |
28536 KB |
Output is correct |
19 |
Correct |
22 ms |
28536 KB |
Output is correct |
20 |
Correct |
23 ms |
28536 KB |
Output is correct |
21 |
Correct |
23 ms |
28536 KB |
Output is correct |
22 |
Correct |
22 ms |
28536 KB |
Output is correct |
23 |
Correct |
23 ms |
28556 KB |
Output is correct |
24 |
Correct |
22 ms |
28556 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
22 ms |
28536 KB |
Output is correct |
2 |
Correct |
24 ms |
28536 KB |
Output is correct |
3 |
Correct |
23 ms |
28540 KB |
Output is correct |
4 |
Correct |
23 ms |
28536 KB |
Output is correct |
5 |
Correct |
22 ms |
28536 KB |
Output is correct |
6 |
Correct |
22 ms |
28536 KB |
Output is correct |
7 |
Correct |
22 ms |
28536 KB |
Output is correct |
8 |
Correct |
22 ms |
28536 KB |
Output is correct |
9 |
Correct |
23 ms |
28536 KB |
Output is correct |
10 |
Correct |
22 ms |
28536 KB |
Output is correct |
11 |
Correct |
22 ms |
28536 KB |
Output is correct |
12 |
Correct |
23 ms |
28536 KB |
Output is correct |
13 |
Correct |
22 ms |
28536 KB |
Output is correct |
14 |
Correct |
23 ms |
28536 KB |
Output is correct |
15 |
Correct |
22 ms |
28536 KB |
Output is correct |
16 |
Correct |
22 ms |
28536 KB |
Output is correct |
17 |
Correct |
22 ms |
28536 KB |
Output is correct |
18 |
Correct |
23 ms |
28536 KB |
Output is correct |
19 |
Correct |
22 ms |
28536 KB |
Output is correct |
20 |
Correct |
23 ms |
28536 KB |
Output is correct |
21 |
Correct |
23 ms |
28536 KB |
Output is correct |
22 |
Correct |
22 ms |
28536 KB |
Output is correct |
23 |
Correct |
23 ms |
28556 KB |
Output is correct |
24 |
Correct |
22 ms |
28556 KB |
Output is correct |
25 |
Correct |
150 ms |
35088 KB |
Output is correct |
26 |
Correct |
38 ms |
29432 KB |
Output is correct |
27 |
Correct |
195 ms |
37624 KB |
Output is correct |
28 |
Correct |
207 ms |
37788 KB |
Output is correct |
29 |
Correct |
139 ms |
35064 KB |
Output is correct |
30 |
Correct |
139 ms |
34680 KB |
Output is correct |
31 |
Correct |
156 ms |
36856 KB |
Output is correct |
32 |
Correct |
200 ms |
37752 KB |
Output is correct |
33 |
Correct |
183 ms |
37112 KB |
Output is correct |
34 |
Correct |
116 ms |
33016 KB |
Output is correct |
35 |
Correct |
192 ms |
37624 KB |
Output is correct |
36 |
Correct |
201 ms |
37752 KB |
Output is correct |
37 |
Correct |
121 ms |
33272 KB |
Output is correct |
38 |
Correct |
199 ms |
36728 KB |
Output is correct |
39 |
Correct |
48 ms |
29816 KB |
Output is correct |
40 |
Correct |
192 ms |
36728 KB |
Output is correct |
41 |
Correct |
159 ms |
34552 KB |
Output is correct |
42 |
Correct |
194 ms |
36728 KB |
Output is correct |
43 |
Correct |
78 ms |
31352 KB |
Output is correct |
44 |
Correct |
213 ms |
36724 KB |
Output is correct |
45 |
Correct |
54 ms |
30072 KB |
Output is correct |
46 |
Correct |
198 ms |
36856 KB |
Output is correct |
47 |
Correct |
67 ms |
30716 KB |
Output is correct |
48 |
Correct |
202 ms |
36728 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
392 ms |
38244 KB |
Output is correct |
2 |
Correct |
436 ms |
38884 KB |
Output is correct |
3 |
Correct |
277 ms |
37092 KB |
Output is correct |
4 |
Correct |
429 ms |
38884 KB |
Output is correct |
5 |
Correct |
174 ms |
33516 KB |
Output is correct |
6 |
Correct |
439 ms |
38884 KB |
Output is correct |
7 |
Correct |
368 ms |
38116 KB |
Output is correct |
8 |
Correct |
439 ms |
38884 KB |
Output is correct |
9 |
Correct |
65 ms |
30576 KB |
Output is correct |
10 |
Correct |
441 ms |
38884 KB |
Output is correct |
11 |
Correct |
264 ms |
36580 KB |
Output is correct |
12 |
Correct |
431 ms |
38884 KB |
Output is correct |
13 |
Correct |
272 ms |
37988 KB |
Output is correct |
14 |
Correct |
257 ms |
37680 KB |
Output is correct |
15 |
Correct |
251 ms |
37700 KB |
Output is correct |
16 |
Correct |
222 ms |
38248 KB |
Output is correct |
17 |
Correct |
286 ms |
38172 KB |
Output is correct |
18 |
Correct |
258 ms |
38076 KB |
Output is correct |
19 |
Correct |
265 ms |
37636 KB |
Output is correct |
20 |
Correct |
255 ms |
37628 KB |
Output is correct |
21 |
Correct |
248 ms |
37084 KB |
Output is correct |
22 |
Correct |
265 ms |
37472 KB |
Output is correct |
23 |
Correct |
272 ms |
37864 KB |
Output is correct |
24 |
Correct |
235 ms |
37820 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
22 ms |
28536 KB |
Output is correct |
2 |
Correct |
24 ms |
28536 KB |
Output is correct |
3 |
Correct |
23 ms |
28540 KB |
Output is correct |
4 |
Correct |
23 ms |
28536 KB |
Output is correct |
5 |
Correct |
22 ms |
28536 KB |
Output is correct |
6 |
Correct |
22 ms |
28536 KB |
Output is correct |
7 |
Correct |
22 ms |
28536 KB |
Output is correct |
8 |
Correct |
22 ms |
28536 KB |
Output is correct |
9 |
Correct |
23 ms |
28536 KB |
Output is correct |
10 |
Correct |
22 ms |
28536 KB |
Output is correct |
11 |
Correct |
22 ms |
28536 KB |
Output is correct |
12 |
Correct |
23 ms |
28536 KB |
Output is correct |
13 |
Correct |
22 ms |
28536 KB |
Output is correct |
14 |
Correct |
23 ms |
28536 KB |
Output is correct |
15 |
Correct |
22 ms |
28536 KB |
Output is correct |
16 |
Correct |
22 ms |
28536 KB |
Output is correct |
17 |
Correct |
22 ms |
28536 KB |
Output is correct |
18 |
Correct |
23 ms |
28536 KB |
Output is correct |
19 |
Correct |
22 ms |
28536 KB |
Output is correct |
20 |
Correct |
23 ms |
28536 KB |
Output is correct |
21 |
Correct |
23 ms |
28536 KB |
Output is correct |
22 |
Correct |
22 ms |
28536 KB |
Output is correct |
23 |
Correct |
23 ms |
28556 KB |
Output is correct |
24 |
Correct |
22 ms |
28556 KB |
Output is correct |
25 |
Correct |
150 ms |
35088 KB |
Output is correct |
26 |
Correct |
38 ms |
29432 KB |
Output is correct |
27 |
Correct |
195 ms |
37624 KB |
Output is correct |
28 |
Correct |
207 ms |
37788 KB |
Output is correct |
29 |
Correct |
139 ms |
35064 KB |
Output is correct |
30 |
Correct |
139 ms |
34680 KB |
Output is correct |
31 |
Correct |
156 ms |
36856 KB |
Output is correct |
32 |
Correct |
200 ms |
37752 KB |
Output is correct |
33 |
Correct |
183 ms |
37112 KB |
Output is correct |
34 |
Correct |
116 ms |
33016 KB |
Output is correct |
35 |
Correct |
192 ms |
37624 KB |
Output is correct |
36 |
Correct |
201 ms |
37752 KB |
Output is correct |
37 |
Correct |
121 ms |
33272 KB |
Output is correct |
38 |
Correct |
199 ms |
36728 KB |
Output is correct |
39 |
Correct |
48 ms |
29816 KB |
Output is correct |
40 |
Correct |
192 ms |
36728 KB |
Output is correct |
41 |
Correct |
159 ms |
34552 KB |
Output is correct |
42 |
Correct |
194 ms |
36728 KB |
Output is correct |
43 |
Correct |
78 ms |
31352 KB |
Output is correct |
44 |
Correct |
213 ms |
36724 KB |
Output is correct |
45 |
Correct |
54 ms |
30072 KB |
Output is correct |
46 |
Correct |
198 ms |
36856 KB |
Output is correct |
47 |
Correct |
67 ms |
30716 KB |
Output is correct |
48 |
Correct |
202 ms |
36728 KB |
Output is correct |
49 |
Correct |
392 ms |
38244 KB |
Output is correct |
50 |
Correct |
436 ms |
38884 KB |
Output is correct |
51 |
Correct |
277 ms |
37092 KB |
Output is correct |
52 |
Correct |
429 ms |
38884 KB |
Output is correct |
53 |
Correct |
174 ms |
33516 KB |
Output is correct |
54 |
Correct |
439 ms |
38884 KB |
Output is correct |
55 |
Correct |
368 ms |
38116 KB |
Output is correct |
56 |
Correct |
439 ms |
38884 KB |
Output is correct |
57 |
Correct |
65 ms |
30576 KB |
Output is correct |
58 |
Correct |
441 ms |
38884 KB |
Output is correct |
59 |
Correct |
264 ms |
36580 KB |
Output is correct |
60 |
Correct |
431 ms |
38884 KB |
Output is correct |
61 |
Correct |
272 ms |
37988 KB |
Output is correct |
62 |
Correct |
257 ms |
37680 KB |
Output is correct |
63 |
Correct |
251 ms |
37700 KB |
Output is correct |
64 |
Correct |
222 ms |
38248 KB |
Output is correct |
65 |
Correct |
286 ms |
38172 KB |
Output is correct |
66 |
Correct |
258 ms |
38076 KB |
Output is correct |
67 |
Correct |
265 ms |
37636 KB |
Output is correct |
68 |
Correct |
255 ms |
37628 KB |
Output is correct |
69 |
Correct |
248 ms |
37084 KB |
Output is correct |
70 |
Correct |
265 ms |
37472 KB |
Output is correct |
71 |
Correct |
272 ms |
37864 KB |
Output is correct |
72 |
Correct |
235 ms |
37820 KB |
Output is correct |
73 |
Correct |
692 ms |
50400 KB |
Output is correct |
74 |
Correct |
457 ms |
44260 KB |
Output is correct |
75 |
Correct |
674 ms |
49772 KB |
Output is correct |
76 |
Correct |
847 ms |
54620 KB |
Output is correct |
77 |
Correct |
461 ms |
43108 KB |
Output is correct |
78 |
Correct |
695 ms |
51036 KB |
Output is correct |
79 |
Correct |
755 ms |
52572 KB |
Output is correct |
80 |
Correct |
835 ms |
54748 KB |
Output is correct |
81 |
Correct |
309 ms |
40556 KB |
Output is correct |
82 |
Correct |
654 ms |
49116 KB |
Output is correct |
83 |
Correct |
589 ms |
48604 KB |
Output is correct |
84 |
Correct |
836 ms |
54620 KB |
Output is correct |
85 |
Correct |
526 ms |
47800 KB |
Output is correct |
86 |
Correct |
682 ms |
51728 KB |
Output is correct |
87 |
Correct |
319 ms |
43588 KB |
Output is correct |
88 |
Correct |
614 ms |
52072 KB |
Output is correct |
89 |
Correct |
580 ms |
49316 KB |
Output is correct |
90 |
Correct |
638 ms |
52028 KB |
Output is correct |
91 |
Correct |
400 ms |
45444 KB |
Output is correct |
92 |
Correct |
652 ms |
51456 KB |
Output is correct |
93 |
Correct |
336 ms |
43472 KB |
Output is correct |
94 |
Correct |
650 ms |
51804 KB |
Output is correct |
95 |
Correct |
390 ms |
44648 KB |
Output is correct |
96 |
Correct |
623 ms |
51644 KB |
Output is correct |