#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 3e5 + 20;
const int inf = 1e9;
set<pair<int,int>> tindex[maxn];
int ans[maxn];
vector<int> cmp;
multiset<int> seg[8*maxn];
pair<int,int> get(int id, int L, int R, int idx){
if (R <= idx or idx < L)
return {inf, 0};
if (L + 1 == R){
if (seg[id].empty())
return {inf,0};
return {*seg[id].begin(), *seg[id].rbegin()};
}
pair<int,int> ret = {inf,0};
if (!seg[id].empty())
ret = {*seg[id].begin(), *seg[id].rbegin()};
int mid = (L + R) >> 1;
auto it1 = get(2*id+0, L, mid, idx);
auto it2 = get(2*id+1, mid, R, idx);
ret.first = min({ret.first, it1.first, it2.first});
ret.second = max({ret.second, it1.second, it2.second});
return ret;
}
void change(int id, int L, int R, int l, int r, int x, char type){
if (r <= L or R <= l)
return;
if (l <= L and R <= r){
if (type == 'A')
seg[id].insert(x);
else
seg[id].erase(seg[id].find(x));
return;
}
int mid = (L + R) >> 1;
change(2*id+0, L, mid, l, r, x, type);
change(2*id+1, mid, R, l, r, x, type);
}
int m;
pair<int,int> getpre(int x, int idx, int type){
auto it = tindex[type].lower_bound(make_pair(x,idx));
if (it == tindex[type].begin())
return {-1,-1};
it --;
return *it;
}
pair<int,int> getnex(int x, int idx, int type){
auto it = tindex[type].lower_bound(make_pair(x,idx));
it ++;
if (it == tindex[type].end())
return {-1,-1};
return *it;
}
void add(int x, int idx, int type){
if (x == -1)
return;
int pre = getpre(x,idx,type).first, nex = getnex(x,idx,type).first;
if (pre == -1)
pre = 0;
else
pre = lower_bound(cmp.begin(), cmp.end(), (cmp[pre]+cmp[x]+1)/2) - cmp.begin();
if (nex == -1)
nex = m;
else
nex = lower_bound(cmp.begin(), cmp.end(), (cmp[nex]+cmp[x]+1)/2) - cmp.begin();
change(1, 0, m, pre, nex, x, 'A');
}
void del(int x, int idx, int type){
if (x == -1)
return;
int pre = getpre(x,idx,type).first, nex = getnex(x,idx,type).first;
if (pre == -1)
pre = 0;
else
pre = lower_bound(cmp.begin(), cmp.end(), (cmp[pre]+cmp[x]+1)/2) - cmp.begin();
if (nex == -1)
nex = m;
else
nex = lower_bound(cmp.begin(), cmp.end(), (cmp[nex]+cmp[x]+1)/2) - cmp.begin();
change(1, 0, m, pre, nex, x, 'D');
}
int main(){
int n, k, q;
scanf("%d%d%d", &n, &k, &q);
vector<pair<pair<int,int>, pair<int,int>>> event;
for (int i = 0; i < n; i++){
int x, t, a, b;
scanf("%d%d%d%d", &x, &t, &a, &b);
event.push_back({{a,i}, {x,t}});
event.push_back({{b,n+1+i}, {x,t}});
cmp.push_back(x);
}
for (int i = 0; i < q; i++){
int l, y;
scanf("%d%d", &l, &y);
cmp.push_back(l);
event.push_back({{y,n}, {l,i}});
}
sort(cmp.begin(), cmp.end());
cmp.resize(unique(cmp.begin(), cmp.end()) - cmp.begin());
m = cmp.size();
for (int i = 0; i < event.size(); i++)
event[i].second.first = lower_bound(cmp.begin(), cmp.end(), event[i].second.first) - cmp.begin();
sort(event.begin(), event.end());
if (n <= 60000 and q <= 60000){
int cnt = 0;
for (auto Q : event){
if (Q.first.second < n){
int x = Q.second.first, type = Q.second.second, idx = Q.first.second;
if (tindex[type].empty())
cnt ++;
tindex[type].insert({x,idx});
auto nex = getnex(x, idx, type), pre = getpre(x, idx, type);
tindex[type].erase({x,idx});
del(pre.first, pre.second, type);
del(nex.first, nex.second, type);
tindex[type].insert({x,idx});
add(x, idx, type);
add(pre.first, pre.second, type);
add(nex.first, nex.second, type);
}
else if (Q.first.second > n){
int x = Q.second.first, type = Q.second.second, idx = Q.first.second - n - 1;
auto nex = getnex(x,idx,type), pre = getpre(x,idx,type);
del(x, idx, type);
del(pre.first, pre.second, type);
del(nex.first, nex.second, type);
tindex[type].erase({x,idx});
if (tindex[type].empty())
cnt --;
add(pre.first, pre.second, type);
add(nex.first, nex.second, type);
}
else{
int x = Q.second.first, idx = Q.second.second;
if (cnt < k){
ans[idx] = -1;
continue;
}
auto it = get(1, 0, m, x);
ans[idx] = max(cmp[x]-cmp[it.first], cmp[it.second]-cmp[x]);
}
}
for (int i = 0; i < q; i++)
printf("%d\n", ans[i]);
return 0;
}
int cnt = 0;
for (auto Q : event){
if (Q.first.second < n){
int x = Q.second.first, type = Q.second.second, idx = Q.first.second;
if (tindex[type].empty())
cnt ++;
tindex[type].insert({x,idx});
}
}
memset(ans, -1, sizeof ans);
if (cnt == k){
for (int t = 1; t <= k; t++)
for (auto [x,idx] : tindex[t])
add(t,idx,t);
for (auto Q : event){
if (Q.first.second > n){
int x = Q.second.first, type = Q.second.second, idx = Q.first.second - n - 1;
auto nex = getnex(x,idx,type), pre = getpre(x,idx,type);
del(x, idx, type);
del(pre.first, pre.second, type);
del(nex.first, nex.second, type);
tindex[type].erase({x,idx});
if (tindex[type].empty())
cnt --;
add(pre.first, pre.second, type);
add(nex.first, nex.second, type);
}
else if (Q.first.second == n){
int x = Q.second.first, idx = Q.second.second;
if (cnt < k){
ans[idx] = -1;
continue;
}
auto it = get(1, 0, m, x);
ans[idx] = max(cmp[x]-cmp[it.first], cmp[it.second]-cmp[x]);
}
}
}
for (int i = 0; i < q; i++)
printf("%d\n", ans[i]);
}
Compilation message
new_home.cpp: In function 'int main()':
new_home.cpp:114:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (int i = 0; i < event.size(); i++)
~~^~~~~~~~~~~~~~
new_home.cpp:172:14: warning: decomposition declaration only available with -std=c++1z or -std=gnu++1z
for (auto [x,idx] : tindex[t])
^
new_home.cpp:172:20: warning: unused variable 'x' [-Wunused-variable]
for (auto [x,idx] : tindex[t])
^
new_home.cpp:96:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
scanf("%d%d%d", &n, &k, &q);
~~~~~^~~~~~~~~~~~~~~~~~~~~~
new_home.cpp:100:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
scanf("%d%d%d%d", &x, &t, &a, &b);
~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
new_home.cpp:107:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
scanf("%d%d", &l, &y);
~~~~~^~~~~~~~~~~~~~~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
74 ms |
127096 KB |
Output is correct |
2 |
Correct |
64 ms |
127096 KB |
Output is correct |
3 |
Correct |
76 ms |
127096 KB |
Output is correct |
4 |
Correct |
65 ms |
127096 KB |
Output is correct |
5 |
Correct |
77 ms |
127224 KB |
Output is correct |
6 |
Correct |
71 ms |
127352 KB |
Output is correct |
7 |
Correct |
64 ms |
127240 KB |
Output is correct |
8 |
Correct |
71 ms |
127224 KB |
Output is correct |
9 |
Correct |
65 ms |
127244 KB |
Output is correct |
10 |
Correct |
69 ms |
127224 KB |
Output is correct |
11 |
Correct |
66 ms |
127224 KB |
Output is correct |
12 |
Correct |
69 ms |
127352 KB |
Output is correct |
13 |
Correct |
65 ms |
127248 KB |
Output is correct |
14 |
Correct |
66 ms |
127224 KB |
Output is correct |
15 |
Correct |
66 ms |
127224 KB |
Output is correct |
16 |
Correct |
65 ms |
127224 KB |
Output is correct |
17 |
Correct |
68 ms |
127224 KB |
Output is correct |
18 |
Correct |
67 ms |
127224 KB |
Output is correct |
19 |
Correct |
65 ms |
127224 KB |
Output is correct |
20 |
Correct |
66 ms |
127224 KB |
Output is correct |
21 |
Correct |
65 ms |
127224 KB |
Output is correct |
22 |
Correct |
67 ms |
127224 KB |
Output is correct |
23 |
Correct |
69 ms |
127360 KB |
Output is correct |
24 |
Correct |
67 ms |
127224 KB |
Output is correct |
25 |
Correct |
66 ms |
127224 KB |
Output is correct |
26 |
Correct |
66 ms |
127224 KB |
Output is correct |
27 |
Correct |
66 ms |
127200 KB |
Output is correct |
28 |
Correct |
67 ms |
127224 KB |
Output is correct |
29 |
Correct |
67 ms |
127224 KB |
Output is correct |
30 |
Correct |
65 ms |
127224 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
74 ms |
127096 KB |
Output is correct |
2 |
Correct |
64 ms |
127096 KB |
Output is correct |
3 |
Correct |
76 ms |
127096 KB |
Output is correct |
4 |
Correct |
65 ms |
127096 KB |
Output is correct |
5 |
Correct |
77 ms |
127224 KB |
Output is correct |
6 |
Correct |
71 ms |
127352 KB |
Output is correct |
7 |
Correct |
64 ms |
127240 KB |
Output is correct |
8 |
Correct |
71 ms |
127224 KB |
Output is correct |
9 |
Correct |
65 ms |
127244 KB |
Output is correct |
10 |
Correct |
69 ms |
127224 KB |
Output is correct |
11 |
Correct |
66 ms |
127224 KB |
Output is correct |
12 |
Correct |
69 ms |
127352 KB |
Output is correct |
13 |
Correct |
65 ms |
127248 KB |
Output is correct |
14 |
Correct |
66 ms |
127224 KB |
Output is correct |
15 |
Correct |
66 ms |
127224 KB |
Output is correct |
16 |
Correct |
65 ms |
127224 KB |
Output is correct |
17 |
Correct |
68 ms |
127224 KB |
Output is correct |
18 |
Correct |
67 ms |
127224 KB |
Output is correct |
19 |
Correct |
65 ms |
127224 KB |
Output is correct |
20 |
Correct |
66 ms |
127224 KB |
Output is correct |
21 |
Correct |
65 ms |
127224 KB |
Output is correct |
22 |
Correct |
67 ms |
127224 KB |
Output is correct |
23 |
Correct |
69 ms |
127360 KB |
Output is correct |
24 |
Correct |
67 ms |
127224 KB |
Output is correct |
25 |
Correct |
66 ms |
127224 KB |
Output is correct |
26 |
Correct |
66 ms |
127224 KB |
Output is correct |
27 |
Correct |
66 ms |
127200 KB |
Output is correct |
28 |
Correct |
67 ms |
127224 KB |
Output is correct |
29 |
Correct |
67 ms |
127224 KB |
Output is correct |
30 |
Correct |
65 ms |
127224 KB |
Output is correct |
31 |
Correct |
2682 ms |
159816 KB |
Output is correct |
32 |
Correct |
352 ms |
132072 KB |
Output is correct |
33 |
Correct |
1390 ms |
137948 KB |
Output is correct |
34 |
Correct |
2308 ms |
143264 KB |
Output is correct |
35 |
Correct |
2185 ms |
155488 KB |
Output is correct |
36 |
Correct |
1277 ms |
145816 KB |
Output is correct |
37 |
Correct |
1031 ms |
132732 KB |
Output is correct |
38 |
Correct |
766 ms |
132068 KB |
Output is correct |
39 |
Correct |
662 ms |
132092 KB |
Output is correct |
40 |
Correct |
665 ms |
132068 KB |
Output is correct |
41 |
Correct |
608 ms |
132200 KB |
Output is correct |
42 |
Correct |
626 ms |
132068 KB |
Output is correct |
43 |
Correct |
190 ms |
134108 KB |
Output is correct |
44 |
Correct |
621 ms |
132068 KB |
Output is correct |
45 |
Correct |
528 ms |
132072 KB |
Output is correct |
46 |
Correct |
464 ms |
132084 KB |
Output is correct |
47 |
Correct |
362 ms |
132092 KB |
Output is correct |
48 |
Correct |
349 ms |
132040 KB |
Output is correct |
49 |
Correct |
440 ms |
132160 KB |
Output is correct |
50 |
Correct |
546 ms |
132068 KB |
Output is correct |
51 |
Correct |
433 ms |
132068 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Execution timed out |
5110 ms |
312252 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Execution timed out |
5106 ms |
284716 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
74 ms |
127096 KB |
Output is correct |
2 |
Correct |
64 ms |
127096 KB |
Output is correct |
3 |
Correct |
76 ms |
127096 KB |
Output is correct |
4 |
Correct |
65 ms |
127096 KB |
Output is correct |
5 |
Correct |
77 ms |
127224 KB |
Output is correct |
6 |
Correct |
71 ms |
127352 KB |
Output is correct |
7 |
Correct |
64 ms |
127240 KB |
Output is correct |
8 |
Correct |
71 ms |
127224 KB |
Output is correct |
9 |
Correct |
65 ms |
127244 KB |
Output is correct |
10 |
Correct |
69 ms |
127224 KB |
Output is correct |
11 |
Correct |
66 ms |
127224 KB |
Output is correct |
12 |
Correct |
69 ms |
127352 KB |
Output is correct |
13 |
Correct |
65 ms |
127248 KB |
Output is correct |
14 |
Correct |
66 ms |
127224 KB |
Output is correct |
15 |
Correct |
66 ms |
127224 KB |
Output is correct |
16 |
Correct |
65 ms |
127224 KB |
Output is correct |
17 |
Correct |
68 ms |
127224 KB |
Output is correct |
18 |
Correct |
67 ms |
127224 KB |
Output is correct |
19 |
Correct |
65 ms |
127224 KB |
Output is correct |
20 |
Correct |
66 ms |
127224 KB |
Output is correct |
21 |
Correct |
65 ms |
127224 KB |
Output is correct |
22 |
Correct |
67 ms |
127224 KB |
Output is correct |
23 |
Correct |
69 ms |
127360 KB |
Output is correct |
24 |
Correct |
67 ms |
127224 KB |
Output is correct |
25 |
Correct |
66 ms |
127224 KB |
Output is correct |
26 |
Correct |
66 ms |
127224 KB |
Output is correct |
27 |
Correct |
66 ms |
127200 KB |
Output is correct |
28 |
Correct |
67 ms |
127224 KB |
Output is correct |
29 |
Correct |
67 ms |
127224 KB |
Output is correct |
30 |
Correct |
65 ms |
127224 KB |
Output is correct |
31 |
Correct |
2682 ms |
159816 KB |
Output is correct |
32 |
Correct |
352 ms |
132072 KB |
Output is correct |
33 |
Correct |
1390 ms |
137948 KB |
Output is correct |
34 |
Correct |
2308 ms |
143264 KB |
Output is correct |
35 |
Correct |
2185 ms |
155488 KB |
Output is correct |
36 |
Correct |
1277 ms |
145816 KB |
Output is correct |
37 |
Correct |
1031 ms |
132732 KB |
Output is correct |
38 |
Correct |
766 ms |
132068 KB |
Output is correct |
39 |
Correct |
662 ms |
132092 KB |
Output is correct |
40 |
Correct |
665 ms |
132068 KB |
Output is correct |
41 |
Correct |
608 ms |
132200 KB |
Output is correct |
42 |
Correct |
626 ms |
132068 KB |
Output is correct |
43 |
Correct |
190 ms |
134108 KB |
Output is correct |
44 |
Correct |
621 ms |
132068 KB |
Output is correct |
45 |
Correct |
528 ms |
132072 KB |
Output is correct |
46 |
Correct |
464 ms |
132084 KB |
Output is correct |
47 |
Correct |
362 ms |
132092 KB |
Output is correct |
48 |
Correct |
349 ms |
132040 KB |
Output is correct |
49 |
Correct |
440 ms |
132160 KB |
Output is correct |
50 |
Correct |
546 ms |
132068 KB |
Output is correct |
51 |
Correct |
433 ms |
132068 KB |
Output is correct |
52 |
Correct |
232 ms |
136412 KB |
Output is correct |
53 |
Correct |
221 ms |
132956 KB |
Output is correct |
54 |
Correct |
1419 ms |
162144 KB |
Output is correct |
55 |
Correct |
502 ms |
133340 KB |
Output is correct |
56 |
Correct |
432 ms |
134236 KB |
Output is correct |
57 |
Correct |
586 ms |
132068 KB |
Output is correct |
58 |
Correct |
541 ms |
133324 KB |
Output is correct |
59 |
Correct |
478 ms |
134092 KB |
Output is correct |
60 |
Correct |
648 ms |
132068 KB |
Output is correct |
61 |
Correct |
155 ms |
136892 KB |
Output is correct |
62 |
Correct |
266 ms |
136768 KB |
Output is correct |
63 |
Correct |
893 ms |
149468 KB |
Output is correct |
64 |
Correct |
1057 ms |
148652 KB |
Output is correct |
65 |
Correct |
1016 ms |
137052 KB |
Output is correct |
66 |
Correct |
702 ms |
132072 KB |
Output is correct |
67 |
Correct |
442 ms |
133344 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
74 ms |
127096 KB |
Output is correct |
2 |
Correct |
64 ms |
127096 KB |
Output is correct |
3 |
Correct |
76 ms |
127096 KB |
Output is correct |
4 |
Correct |
65 ms |
127096 KB |
Output is correct |
5 |
Correct |
77 ms |
127224 KB |
Output is correct |
6 |
Correct |
71 ms |
127352 KB |
Output is correct |
7 |
Correct |
64 ms |
127240 KB |
Output is correct |
8 |
Correct |
71 ms |
127224 KB |
Output is correct |
9 |
Correct |
65 ms |
127244 KB |
Output is correct |
10 |
Correct |
69 ms |
127224 KB |
Output is correct |
11 |
Correct |
66 ms |
127224 KB |
Output is correct |
12 |
Correct |
69 ms |
127352 KB |
Output is correct |
13 |
Correct |
65 ms |
127248 KB |
Output is correct |
14 |
Correct |
66 ms |
127224 KB |
Output is correct |
15 |
Correct |
66 ms |
127224 KB |
Output is correct |
16 |
Correct |
65 ms |
127224 KB |
Output is correct |
17 |
Correct |
68 ms |
127224 KB |
Output is correct |
18 |
Correct |
67 ms |
127224 KB |
Output is correct |
19 |
Correct |
65 ms |
127224 KB |
Output is correct |
20 |
Correct |
66 ms |
127224 KB |
Output is correct |
21 |
Correct |
65 ms |
127224 KB |
Output is correct |
22 |
Correct |
67 ms |
127224 KB |
Output is correct |
23 |
Correct |
69 ms |
127360 KB |
Output is correct |
24 |
Correct |
67 ms |
127224 KB |
Output is correct |
25 |
Correct |
66 ms |
127224 KB |
Output is correct |
26 |
Correct |
66 ms |
127224 KB |
Output is correct |
27 |
Correct |
66 ms |
127200 KB |
Output is correct |
28 |
Correct |
67 ms |
127224 KB |
Output is correct |
29 |
Correct |
67 ms |
127224 KB |
Output is correct |
30 |
Correct |
65 ms |
127224 KB |
Output is correct |
31 |
Correct |
2682 ms |
159816 KB |
Output is correct |
32 |
Correct |
352 ms |
132072 KB |
Output is correct |
33 |
Correct |
1390 ms |
137948 KB |
Output is correct |
34 |
Correct |
2308 ms |
143264 KB |
Output is correct |
35 |
Correct |
2185 ms |
155488 KB |
Output is correct |
36 |
Correct |
1277 ms |
145816 KB |
Output is correct |
37 |
Correct |
1031 ms |
132732 KB |
Output is correct |
38 |
Correct |
766 ms |
132068 KB |
Output is correct |
39 |
Correct |
662 ms |
132092 KB |
Output is correct |
40 |
Correct |
665 ms |
132068 KB |
Output is correct |
41 |
Correct |
608 ms |
132200 KB |
Output is correct |
42 |
Correct |
626 ms |
132068 KB |
Output is correct |
43 |
Correct |
190 ms |
134108 KB |
Output is correct |
44 |
Correct |
621 ms |
132068 KB |
Output is correct |
45 |
Correct |
528 ms |
132072 KB |
Output is correct |
46 |
Correct |
464 ms |
132084 KB |
Output is correct |
47 |
Correct |
362 ms |
132092 KB |
Output is correct |
48 |
Correct |
349 ms |
132040 KB |
Output is correct |
49 |
Correct |
440 ms |
132160 KB |
Output is correct |
50 |
Correct |
546 ms |
132068 KB |
Output is correct |
51 |
Correct |
433 ms |
132068 KB |
Output is correct |
52 |
Execution timed out |
5110 ms |
312252 KB |
Time limit exceeded |
53 |
Halted |
0 ms |
0 KB |
- |