#include <bits/stdc++.h>
using namespace std;
const int MAXN = 3e5;
const int MAXV = 1e8;
int n, k, q;
class event {
public:
int time;
bool type; // 0 update, 1 query
bool start_or_end; // 0 start, 1 end. Only for updates
int store_type; // update only
int pos; // both
int id; // query
event(int tim, bool se, int tp, int p) {
time = tim;
type = 0;
start_or_end = se;
store_type = tp;
pos = p;
}
event(int tim, int p, int i) {
type = 1;
time = tim;
pos = p;
id = i;
}
};
bool operator<(event &a, event &b) {
return (a.time == b.time) ? (a.type < b.type) : (a.time < b.time);
}
vector<event> events;
int answs[MAXN];
int cnt[MAXN];
int num_active = 0;
multiset<int> locs[MAXN];
class stree {
public:
int lp, rp;
stree *l = nullptr;
stree *r = nullptr;
int mx[2];
multiset<int> all_vals[2]; // only for lowest level
stree(int lv, int rv) {
mx[0] = mx[1] = 0;
lp = lv;
rp = rv;
}
int mxq(int lv, int rv, bool lr) {
if (lp > rv || rp < lv) return 0;
if (lp >= lv && rp <= rv) return mx[lr];
int best = 0;
if (l) best = max(best, l->mxq(lv, rv, lr));
if (r) best = max(best, r->mxq(lv, rv, lr));
return best;
}
void update(int p, int v, bool lr) {
if (lp == rp) {
all_vals[lr].insert(v);
mx[lr] = *(all_vals[lr].rbegin());
return;
}
int m = (lp+rp)/2;
if (p <= m) {
if (!l) l = new stree(lp, m);
l->update(p, v, lr);
}
else {
if (!r) r = new stree(m+1, rp);
r->update(p, v, lr);
}
mx[lr] = 0;
if (l) mx[lr] = max(mx[lr], l->mx[lr]);
if (r) mx[lr] = max(mx[lr], r->mx[lr]);
}
void deupdate(int p, int v, bool lr) {
if (lp == rp) {
all_vals[lr].erase(all_vals[lr].find(v));
if (all_vals[lr].empty()) mx[lr] = 0;
else mx[lr] = *(all_vals[lr].rbegin());
return;
}
int m = (lp+rp)/2;
if (p <= m) {
if (!l) l = new stree(lp, m);
l->deupdate(p, v, lr);
}
else {
if (!r) r = new stree(m+1, rp);
r->deupdate(p, v, lr);
}
mx[lr] = 0;
if (l) mx[lr] = max(mx[lr], l->mx[lr]);
if (r) mx[lr] = max(mx[lr], r->mx[lr]);
}
};
stree *tree;
void make(int l, int r) {
if (l == -1 && r == -1) return;
if (l == -1) {
tree->update(0, r, 0);
return;
}
if (r == -1) {
tree->update(MAXV, MAXV-l, 1);
return;
}
int p1 = (l+r)/2;
int p2 = (l+r+1)/2;
int v1 = MAXV-l;
int v2 = r;
tree->update(p2, v2, 0);
tree->update(p1, v1, 1);
}
void unmake(int l, int r) {
if (l == -1 && r == -1) return;
if (l == -1) {
tree->deupdate(0, r, 0);
return;
}
if (r == -1) {
tree->deupdate(MAXV, MAXV-l, 1);
return;
}
int p1 = (l+r)/2;
int p2 = (l+r+1)/2;
int v1 = MAXV-l;
int v2 = r;
tree->deupdate(p2, v2, 0);
tree->deupdate(p1, v1, 1);
}
int main() {
ios_base::sync_with_stdio(false); cin.tie(NULL);
cin >> n >> k >> q;
tree = new stree(0, MAXV);
for (int i = 0; i < n; i++) {
int x, t, a, b;
cin >> x >> t >> a >> b; t--;
events.push_back(event(a, 0, t, x));
events.push_back(event(b+1, 1, t, x));
}
for (int i = 0; i < q; i++) {
int x, t; cin >> x >> t;
events.push_back(event(t, x, i));
}
sort(events.begin(), events.end());
for (event ev: events) {
if (ev.type == 0) {
int type = ev.store_type;
if (ev.start_or_end == 0) {
num_active += (cnt[type] == 0);
cnt[type]++;
if (locs[type].find(ev.pos) != locs[type].end()) {
locs[type].insert(ev.pos);
continue;
}
auto iter = locs[type].lower_bound(ev.pos);
int r = -1;
int l = -1;
if (iter != locs[type].end()) r = *iter;
if (iter != locs[type].begin()) {
iter--;
l = *iter;
}
unmake(l, r);
locs[type].insert(ev.pos);
make(l, ev.pos);
make(ev.pos, r);
}
else {
cnt[type]--;
num_active -= (cnt[type] == 0);
locs[type].erase(locs[type].find(ev.pos));
if (locs[type].find(ev.pos) != locs[type].end()) continue;
auto iter = locs[type].lower_bound(ev.pos);
int r = -1;
int l = -1;
if (iter != locs[type].end()) r = *iter;
if (iter != locs[type].begin()) {
iter--;
l = *iter;
}
make(l, r);
unmake(l, ev.pos);
unmake(ev.pos, r);
}
}
if (ev.type == 1) {
if (num_active < k) {
answs[ev.id] = -1;
continue;
}
answs[ev.id] = max(tree->mxq(0, ev.pos, 0)-ev.pos, tree->mxq(ev.pos, MAXV, 1)-MAXV+ev.pos);
}
}
for (int i = 0; i < q; i++) cout << answs[i] << "\n";
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
9 ms |
14420 KB |
Output is correct |
2 |
Correct |
9 ms |
14548 KB |
Output is correct |
3 |
Correct |
10 ms |
14364 KB |
Output is correct |
4 |
Correct |
8 ms |
14420 KB |
Output is correct |
5 |
Correct |
9 ms |
14396 KB |
Output is correct |
6 |
Correct |
11 ms |
16848 KB |
Output is correct |
7 |
Correct |
8 ms |
14420 KB |
Output is correct |
8 |
Correct |
10 ms |
15536 KB |
Output is correct |
9 |
Correct |
8 ms |
14404 KB |
Output is correct |
10 |
Correct |
11 ms |
17108 KB |
Output is correct |
11 |
Correct |
10 ms |
15348 KB |
Output is correct |
12 |
Correct |
10 ms |
16648 KB |
Output is correct |
13 |
Correct |
9 ms |
14676 KB |
Output is correct |
14 |
Correct |
9 ms |
15316 KB |
Output is correct |
15 |
Correct |
10 ms |
15316 KB |
Output is correct |
16 |
Correct |
10 ms |
15300 KB |
Output is correct |
17 |
Correct |
10 ms |
15700 KB |
Output is correct |
18 |
Correct |
12 ms |
15316 KB |
Output is correct |
19 |
Correct |
9 ms |
15188 KB |
Output is correct |
20 |
Correct |
12 ms |
15692 KB |
Output is correct |
21 |
Correct |
9 ms |
14420 KB |
Output is correct |
22 |
Correct |
9 ms |
14420 KB |
Output is correct |
23 |
Correct |
9 ms |
15060 KB |
Output is correct |
24 |
Correct |
10 ms |
15316 KB |
Output is correct |
25 |
Correct |
10 ms |
15700 KB |
Output is correct |
26 |
Correct |
10 ms |
15828 KB |
Output is correct |
27 |
Correct |
9 ms |
14420 KB |
Output is correct |
28 |
Correct |
9 ms |
15316 KB |
Output is correct |
29 |
Correct |
9 ms |
15444 KB |
Output is correct |
30 |
Correct |
9 ms |
14916 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
9 ms |
14420 KB |
Output is correct |
2 |
Correct |
9 ms |
14548 KB |
Output is correct |
3 |
Correct |
10 ms |
14364 KB |
Output is correct |
4 |
Correct |
8 ms |
14420 KB |
Output is correct |
5 |
Correct |
9 ms |
14396 KB |
Output is correct |
6 |
Correct |
11 ms |
16848 KB |
Output is correct |
7 |
Correct |
8 ms |
14420 KB |
Output is correct |
8 |
Correct |
10 ms |
15536 KB |
Output is correct |
9 |
Correct |
8 ms |
14404 KB |
Output is correct |
10 |
Correct |
11 ms |
17108 KB |
Output is correct |
11 |
Correct |
10 ms |
15348 KB |
Output is correct |
12 |
Correct |
10 ms |
16648 KB |
Output is correct |
13 |
Correct |
9 ms |
14676 KB |
Output is correct |
14 |
Correct |
9 ms |
15316 KB |
Output is correct |
15 |
Correct |
10 ms |
15316 KB |
Output is correct |
16 |
Correct |
10 ms |
15300 KB |
Output is correct |
17 |
Correct |
10 ms |
15700 KB |
Output is correct |
18 |
Correct |
12 ms |
15316 KB |
Output is correct |
19 |
Correct |
9 ms |
15188 KB |
Output is correct |
20 |
Correct |
12 ms |
15692 KB |
Output is correct |
21 |
Correct |
9 ms |
14420 KB |
Output is correct |
22 |
Correct |
9 ms |
14420 KB |
Output is correct |
23 |
Correct |
9 ms |
15060 KB |
Output is correct |
24 |
Correct |
10 ms |
15316 KB |
Output is correct |
25 |
Correct |
10 ms |
15700 KB |
Output is correct |
26 |
Correct |
10 ms |
15828 KB |
Output is correct |
27 |
Correct |
9 ms |
14420 KB |
Output is correct |
28 |
Correct |
9 ms |
15316 KB |
Output is correct |
29 |
Correct |
9 ms |
15444 KB |
Output is correct |
30 |
Correct |
9 ms |
14916 KB |
Output is correct |
31 |
Correct |
893 ms |
287828 KB |
Output is correct |
32 |
Correct |
87 ms |
19652 KB |
Output is correct |
33 |
Correct |
893 ms |
289536 KB |
Output is correct |
34 |
Correct |
880 ms |
274072 KB |
Output is correct |
35 |
Correct |
942 ms |
295604 KB |
Output is correct |
36 |
Correct |
918 ms |
299504 KB |
Output is correct |
37 |
Correct |
757 ms |
282988 KB |
Output is correct |
38 |
Correct |
773 ms |
286592 KB |
Output is correct |
39 |
Correct |
570 ms |
276432 KB |
Output is correct |
40 |
Correct |
559 ms |
282720 KB |
Output is correct |
41 |
Correct |
469 ms |
155540 KB |
Output is correct |
42 |
Correct |
429 ms |
155896 KB |
Output is correct |
43 |
Correct |
67 ms |
21544 KB |
Output is correct |
44 |
Correct |
434 ms |
156048 KB |
Output is correct |
45 |
Correct |
433 ms |
156280 KB |
Output is correct |
46 |
Correct |
402 ms |
156172 KB |
Output is correct |
47 |
Correct |
303 ms |
125220 KB |
Output is correct |
48 |
Correct |
276 ms |
136200 KB |
Output is correct |
49 |
Correct |
337 ms |
147248 KB |
Output is correct |
50 |
Correct |
328 ms |
140172 KB |
Output is correct |
51 |
Correct |
352 ms |
150636 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
3665 ms |
608660 KB |
Output is correct |
2 |
Runtime error |
4650 ms |
1048580 KB |
Execution killed with signal 9 |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
4899 ms |
1047572 KB |
Output is correct |
2 |
Correct |
444 ms |
52100 KB |
Output is correct |
3 |
Runtime error |
3955 ms |
1048576 KB |
Execution killed with signal 9 |
4 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
9 ms |
14420 KB |
Output is correct |
2 |
Correct |
9 ms |
14548 KB |
Output is correct |
3 |
Correct |
10 ms |
14364 KB |
Output is correct |
4 |
Correct |
8 ms |
14420 KB |
Output is correct |
5 |
Correct |
9 ms |
14396 KB |
Output is correct |
6 |
Correct |
11 ms |
16848 KB |
Output is correct |
7 |
Correct |
8 ms |
14420 KB |
Output is correct |
8 |
Correct |
10 ms |
15536 KB |
Output is correct |
9 |
Correct |
8 ms |
14404 KB |
Output is correct |
10 |
Correct |
11 ms |
17108 KB |
Output is correct |
11 |
Correct |
10 ms |
15348 KB |
Output is correct |
12 |
Correct |
10 ms |
16648 KB |
Output is correct |
13 |
Correct |
9 ms |
14676 KB |
Output is correct |
14 |
Correct |
9 ms |
15316 KB |
Output is correct |
15 |
Correct |
10 ms |
15316 KB |
Output is correct |
16 |
Correct |
10 ms |
15300 KB |
Output is correct |
17 |
Correct |
10 ms |
15700 KB |
Output is correct |
18 |
Correct |
12 ms |
15316 KB |
Output is correct |
19 |
Correct |
9 ms |
15188 KB |
Output is correct |
20 |
Correct |
12 ms |
15692 KB |
Output is correct |
21 |
Correct |
9 ms |
14420 KB |
Output is correct |
22 |
Correct |
9 ms |
14420 KB |
Output is correct |
23 |
Correct |
9 ms |
15060 KB |
Output is correct |
24 |
Correct |
10 ms |
15316 KB |
Output is correct |
25 |
Correct |
10 ms |
15700 KB |
Output is correct |
26 |
Correct |
10 ms |
15828 KB |
Output is correct |
27 |
Correct |
9 ms |
14420 KB |
Output is correct |
28 |
Correct |
9 ms |
15316 KB |
Output is correct |
29 |
Correct |
9 ms |
15444 KB |
Output is correct |
30 |
Correct |
9 ms |
14916 KB |
Output is correct |
31 |
Correct |
893 ms |
287828 KB |
Output is correct |
32 |
Correct |
87 ms |
19652 KB |
Output is correct |
33 |
Correct |
893 ms |
289536 KB |
Output is correct |
34 |
Correct |
880 ms |
274072 KB |
Output is correct |
35 |
Correct |
942 ms |
295604 KB |
Output is correct |
36 |
Correct |
918 ms |
299504 KB |
Output is correct |
37 |
Correct |
757 ms |
282988 KB |
Output is correct |
38 |
Correct |
773 ms |
286592 KB |
Output is correct |
39 |
Correct |
570 ms |
276432 KB |
Output is correct |
40 |
Correct |
559 ms |
282720 KB |
Output is correct |
41 |
Correct |
469 ms |
155540 KB |
Output is correct |
42 |
Correct |
429 ms |
155896 KB |
Output is correct |
43 |
Correct |
67 ms |
21544 KB |
Output is correct |
44 |
Correct |
434 ms |
156048 KB |
Output is correct |
45 |
Correct |
433 ms |
156280 KB |
Output is correct |
46 |
Correct |
402 ms |
156172 KB |
Output is correct |
47 |
Correct |
303 ms |
125220 KB |
Output is correct |
48 |
Correct |
276 ms |
136200 KB |
Output is correct |
49 |
Correct |
337 ms |
147248 KB |
Output is correct |
50 |
Correct |
328 ms |
140172 KB |
Output is correct |
51 |
Correct |
352 ms |
150636 KB |
Output is correct |
52 |
Correct |
182 ms |
27036 KB |
Output is correct |
53 |
Correct |
206 ms |
21692 KB |
Output is correct |
54 |
Correct |
480 ms |
129764 KB |
Output is correct |
55 |
Correct |
391 ms |
117292 KB |
Output is correct |
56 |
Correct |
326 ms |
96812 KB |
Output is correct |
57 |
Correct |
460 ms |
144240 KB |
Output is correct |
58 |
Correct |
384 ms |
114864 KB |
Output is correct |
59 |
Correct |
350 ms |
93412 KB |
Output is correct |
60 |
Correct |
431 ms |
143852 KB |
Output is correct |
61 |
Correct |
147 ms |
27408 KB |
Output is correct |
62 |
Correct |
211 ms |
27128 KB |
Output is correct |
63 |
Correct |
382 ms |
88584 KB |
Output is correct |
64 |
Correct |
476 ms |
109616 KB |
Output is correct |
65 |
Correct |
543 ms |
141256 KB |
Output is correct |
66 |
Correct |
464 ms |
155312 KB |
Output is correct |
67 |
Correct |
256 ms |
20272 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
9 ms |
14420 KB |
Output is correct |
2 |
Correct |
9 ms |
14548 KB |
Output is correct |
3 |
Correct |
10 ms |
14364 KB |
Output is correct |
4 |
Correct |
8 ms |
14420 KB |
Output is correct |
5 |
Correct |
9 ms |
14396 KB |
Output is correct |
6 |
Correct |
11 ms |
16848 KB |
Output is correct |
7 |
Correct |
8 ms |
14420 KB |
Output is correct |
8 |
Correct |
10 ms |
15536 KB |
Output is correct |
9 |
Correct |
8 ms |
14404 KB |
Output is correct |
10 |
Correct |
11 ms |
17108 KB |
Output is correct |
11 |
Correct |
10 ms |
15348 KB |
Output is correct |
12 |
Correct |
10 ms |
16648 KB |
Output is correct |
13 |
Correct |
9 ms |
14676 KB |
Output is correct |
14 |
Correct |
9 ms |
15316 KB |
Output is correct |
15 |
Correct |
10 ms |
15316 KB |
Output is correct |
16 |
Correct |
10 ms |
15300 KB |
Output is correct |
17 |
Correct |
10 ms |
15700 KB |
Output is correct |
18 |
Correct |
12 ms |
15316 KB |
Output is correct |
19 |
Correct |
9 ms |
15188 KB |
Output is correct |
20 |
Correct |
12 ms |
15692 KB |
Output is correct |
21 |
Correct |
9 ms |
14420 KB |
Output is correct |
22 |
Correct |
9 ms |
14420 KB |
Output is correct |
23 |
Correct |
9 ms |
15060 KB |
Output is correct |
24 |
Correct |
10 ms |
15316 KB |
Output is correct |
25 |
Correct |
10 ms |
15700 KB |
Output is correct |
26 |
Correct |
10 ms |
15828 KB |
Output is correct |
27 |
Correct |
9 ms |
14420 KB |
Output is correct |
28 |
Correct |
9 ms |
15316 KB |
Output is correct |
29 |
Correct |
9 ms |
15444 KB |
Output is correct |
30 |
Correct |
9 ms |
14916 KB |
Output is correct |
31 |
Correct |
893 ms |
287828 KB |
Output is correct |
32 |
Correct |
87 ms |
19652 KB |
Output is correct |
33 |
Correct |
893 ms |
289536 KB |
Output is correct |
34 |
Correct |
880 ms |
274072 KB |
Output is correct |
35 |
Correct |
942 ms |
295604 KB |
Output is correct |
36 |
Correct |
918 ms |
299504 KB |
Output is correct |
37 |
Correct |
757 ms |
282988 KB |
Output is correct |
38 |
Correct |
773 ms |
286592 KB |
Output is correct |
39 |
Correct |
570 ms |
276432 KB |
Output is correct |
40 |
Correct |
559 ms |
282720 KB |
Output is correct |
41 |
Correct |
469 ms |
155540 KB |
Output is correct |
42 |
Correct |
429 ms |
155896 KB |
Output is correct |
43 |
Correct |
67 ms |
21544 KB |
Output is correct |
44 |
Correct |
434 ms |
156048 KB |
Output is correct |
45 |
Correct |
433 ms |
156280 KB |
Output is correct |
46 |
Correct |
402 ms |
156172 KB |
Output is correct |
47 |
Correct |
303 ms |
125220 KB |
Output is correct |
48 |
Correct |
276 ms |
136200 KB |
Output is correct |
49 |
Correct |
337 ms |
147248 KB |
Output is correct |
50 |
Correct |
328 ms |
140172 KB |
Output is correct |
51 |
Correct |
352 ms |
150636 KB |
Output is correct |
52 |
Correct |
3665 ms |
608660 KB |
Output is correct |
53 |
Runtime error |
4650 ms |
1048580 KB |
Execution killed with signal 9 |
54 |
Halted |
0 ms |
0 KB |
- |