#include<bits/stdc++.h>
using namespace std;
#define int long long
int ans[300100];
multiset<int>stor[300100];
map<int,int>importpos;
struct segtree{
stack<pair<int,int>>stk;
int vl[1<<20];
segtree(){for(auto&i:vl)i=-1e18;}
void update(int i,int l,int r,int ll,int rr,int v){
if(l>rr||ll>r)return;
if(ll<=l&&r<=rr) return stk.push({i,vl[i]}),void(vl[i]=max(vl[i],v));
update(i*2,l,l+r>>1,ll,rr,v);
update(i*2+1,l+r+2>>1,r,ll,rr,v);
}
int query(int i,int l,int r,int p){
if(l==r) return vl[i];
if(l+r>>1<p)
return max(vl[i],query(i*2+1,l+r+2>>1,r,p));
return max(vl[i],query(i*2,l,l+r>>1,p));
}
void upd(int l,int r,int v){
update(1,1,importpos.size(),importpos.lower_bound(l)->second,
(--importpos.upper_bound(r))->second,v);
}
int qry(int p) {
return query(1,1,importpos.size(),importpos[p]);
}
void reroll(int k){
while(stk.size()>k){
auto[a,b]=stk.top();
stk.pop();
vl[a]=b;
}
}
} seg1,seg2;
vector<pair<int,int>>todie[1<<20],qrys[300100];
void a_range(int l,int r){
seg1.upd(l,l+r>>1,-l);
seg2.upd(l+r+2>>1,r,r);
}
map<int,vector<pair<int,int>>>qr;
map<int,int>compr;
void splatonto(int i,int l,int r,int ll,int rr,pair<int,int>vl){
if(ll<=l&&r<=rr)
return todie[i].push_back(vl);
if(ll>r||l>rr) return;
splatonto(i*2,l,l+r>>1,ll,rr,vl);
splatonto(i*2+1,l+r+2>>1,r,ll,rr,vl);
}
int depth=0;
void solve(int i,int ll,int rr){
if(ll>rr)return;
int sz1=seg1.stk.size(),sz2=seg2.stk.size();
for(auto[p,t]:todie[i]) {
stor[t].erase(stor[t].find(p));
if(stor[t].find(p)==stor[t].end())
a_range(*--stor[t].lower_bound(p),*stor[t].lower_bound(p));
}
if(ll==rr){
for(auto[p,i]:qrys[ll])
ans[i]=max(seg1.qry(p)+p,seg2.qry(p)-p);
} else {
solve(i*2,ll,ll+rr>>1);
solve(i*2+1,ll+rr+2>>1,rr);
}
for(auto[p,t]:todie[i])
stor[t].insert(p);
seg1.reroll(sz1),seg2.reroll(sz2);
}
vector<array<int,4>> stores;
signed main(){
cin.tie(0)->sync_with_stdio(0);
importpos[-1e18]=0;
int n,k,q;
cin>>n>>k>>q;
for(int i=0;i<n;i++){
int l,r,a,b;
cin>>a>>b>>l>>r;
stor[b].insert(a);
stores.push_back({a,b,l,r});
}
for(int i=1;i<=k;i++)
stor[i].insert(-1e18),stor[i].insert(1e18);
for(int i=0;i<q;i++){
int x,y; cin>>x>>y;
qr[y].push_back({x,i});
compr[y];
importpos[x];
}
int CDCC=0,CDC=0;
for(auto&[i,j]:importpos)
j=++CDC;
importpos[1e18]=CDC+1;
for(auto&[i,j]:compr)
j=++CDCC;
for(auto[k,x]:qr){
int ind=compr[k];
for(auto[p,i]:x)
qrys[ind].push_back({p,i});
}
compr[-1e18]=0;
compr[1e18]=CDCC+1;
for(auto[pos,t,l,r]:stores){
int k=(--compr.lower_bound(l))->second;
splatonto(1,1,CDCC,1,k,{pos,t});
k=compr.upper_bound(r)->second;
splatonto(1,1,CDCC,k,CDCC,{pos,t});
}
for(int i=1;i<=k;i++){
auto it=++stor[i].begin();
while(it!=stor[i].end()){
a_range(*prev(it),*it);
it++;
}
}
solve(1,1,CDCC);
for(int i=0;i<q;i++)
cout<<(ans[i]>1e9?-1:ans[i])<<'\n';
}
Compilation message
new_home.cpp: In member function 'void segtree::update(long long int, long long int, long long int, long long int, long long int, long long int)':
new_home.cpp:14:23: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
14 | update(i*2,l,l+r>>1,ll,rr,v);
| ~^~
new_home.cpp:15:25: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
15 | update(i*2+1,l+r+2>>1,r,ll,rr,v);
| ~~~^~
new_home.cpp: In member function 'long long int segtree::query(long long int, long long int, long long int, long long int)':
new_home.cpp:19:13: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
19 | if(l+r>>1<p)
| ~^~
new_home.cpp:20:45: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
20 | return max(vl[i],query(i*2+1,l+r+2>>1,r,p));
| ~~~^~
new_home.cpp:21:39: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
21 | return max(vl[i],query(i*2,l,l+r>>1,p));
| ~^~
new_home.cpp: In member function 'void segtree::reroll(long long int)':
new_home.cpp:31:25: warning: comparison of integer expressions of different signedness: 'std::stack<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} and 'long long int' [-Wsign-compare]
31 | while(stk.size()>k){
| ~~~~~~~~~~^~
new_home.cpp: In function 'void a_range(long long int, long long int)':
new_home.cpp:40:17: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
40 | seg1.upd(l,l+r>>1,-l);
| ~^~
new_home.cpp:41:17: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
41 | seg2.upd(l+r+2>>1,r,r);
| ~~~^~
new_home.cpp: In function 'void splatonto(long long int, long long int, long long int, long long int, long long int, std::pair<long long int, long long int>)':
new_home.cpp:49:22: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
49 | splatonto(i*2,l,l+r>>1,ll,rr,vl);
| ~^~
new_home.cpp:50:24: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
50 | splatonto(i*2+1,l+r+2>>1,r,ll,rr,vl);
| ~~~^~
new_home.cpp: In function 'void solve(long long int, long long int, long long int)':
new_home.cpp:65:24: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
65 | solve(i*2,ll,ll+rr>>1);
| ~~^~~
new_home.cpp:66:26: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
66 | solve(i*2+1,ll+rr+2>>1,rr);
| ~~~~~^~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
18 ms |
64128 KB |
Output is correct |
2 |
Correct |
15 ms |
64088 KB |
Output is correct |
3 |
Correct |
15 ms |
64088 KB |
Output is correct |
4 |
Correct |
16 ms |
64092 KB |
Output is correct |
5 |
Correct |
15 ms |
64092 KB |
Output is correct |
6 |
Correct |
17 ms |
64344 KB |
Output is correct |
7 |
Correct |
17 ms |
64600 KB |
Output is correct |
8 |
Correct |
20 ms |
64620 KB |
Output is correct |
9 |
Correct |
17 ms |
64680 KB |
Output is correct |
10 |
Correct |
21 ms |
64532 KB |
Output is correct |
11 |
Correct |
22 ms |
64344 KB |
Output is correct |
12 |
Correct |
17 ms |
64348 KB |
Output is correct |
13 |
Correct |
17 ms |
64348 KB |
Output is correct |
14 |
Correct |
17 ms |
64348 KB |
Output is correct |
15 |
Correct |
17 ms |
64596 KB |
Output is correct |
16 |
Correct |
18 ms |
64604 KB |
Output is correct |
17 |
Correct |
17 ms |
64468 KB |
Output is correct |
18 |
Correct |
17 ms |
64604 KB |
Output is correct |
19 |
Correct |
17 ms |
64444 KB |
Output is correct |
20 |
Correct |
18 ms |
64344 KB |
Output is correct |
21 |
Correct |
15 ms |
64092 KB |
Output is correct |
22 |
Correct |
17 ms |
64468 KB |
Output is correct |
23 |
Correct |
17 ms |
64472 KB |
Output is correct |
24 |
Correct |
17 ms |
64600 KB |
Output is correct |
25 |
Correct |
17 ms |
64408 KB |
Output is correct |
26 |
Correct |
21 ms |
64344 KB |
Output is correct |
27 |
Correct |
16 ms |
64348 KB |
Output is correct |
28 |
Correct |
17 ms |
64348 KB |
Output is correct |
29 |
Correct |
17 ms |
64464 KB |
Output is correct |
30 |
Correct |
17 ms |
64344 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
18 ms |
64128 KB |
Output is correct |
2 |
Correct |
15 ms |
64088 KB |
Output is correct |
3 |
Correct |
15 ms |
64088 KB |
Output is correct |
4 |
Correct |
16 ms |
64092 KB |
Output is correct |
5 |
Correct |
15 ms |
64092 KB |
Output is correct |
6 |
Correct |
17 ms |
64344 KB |
Output is correct |
7 |
Correct |
17 ms |
64600 KB |
Output is correct |
8 |
Correct |
20 ms |
64620 KB |
Output is correct |
9 |
Correct |
17 ms |
64680 KB |
Output is correct |
10 |
Correct |
21 ms |
64532 KB |
Output is correct |
11 |
Correct |
22 ms |
64344 KB |
Output is correct |
12 |
Correct |
17 ms |
64348 KB |
Output is correct |
13 |
Correct |
17 ms |
64348 KB |
Output is correct |
14 |
Correct |
17 ms |
64348 KB |
Output is correct |
15 |
Correct |
17 ms |
64596 KB |
Output is correct |
16 |
Correct |
18 ms |
64604 KB |
Output is correct |
17 |
Correct |
17 ms |
64468 KB |
Output is correct |
18 |
Correct |
17 ms |
64604 KB |
Output is correct |
19 |
Correct |
17 ms |
64444 KB |
Output is correct |
20 |
Correct |
18 ms |
64344 KB |
Output is correct |
21 |
Correct |
15 ms |
64092 KB |
Output is correct |
22 |
Correct |
17 ms |
64468 KB |
Output is correct |
23 |
Correct |
17 ms |
64472 KB |
Output is correct |
24 |
Correct |
17 ms |
64600 KB |
Output is correct |
25 |
Correct |
17 ms |
64408 KB |
Output is correct |
26 |
Correct |
21 ms |
64344 KB |
Output is correct |
27 |
Correct |
16 ms |
64348 KB |
Output is correct |
28 |
Correct |
17 ms |
64348 KB |
Output is correct |
29 |
Correct |
17 ms |
64464 KB |
Output is correct |
30 |
Correct |
17 ms |
64344 KB |
Output is correct |
31 |
Correct |
1792 ms |
133072 KB |
Output is correct |
32 |
Correct |
110 ms |
75452 KB |
Output is correct |
33 |
Correct |
1621 ms |
114120 KB |
Output is correct |
34 |
Correct |
1671 ms |
133780 KB |
Output is correct |
35 |
Correct |
1765 ms |
127220 KB |
Output is correct |
36 |
Correct |
1616 ms |
113760 KB |
Output is correct |
37 |
Correct |
1184 ms |
118208 KB |
Output is correct |
38 |
Correct |
1139 ms |
109636 KB |
Output is correct |
39 |
Correct |
866 ms |
111684 KB |
Output is correct |
40 |
Correct |
927 ms |
109484 KB |
Output is correct |
41 |
Correct |
1405 ms |
131516 KB |
Output is correct |
42 |
Correct |
1393 ms |
131984 KB |
Output is correct |
43 |
Correct |
46 ms |
73156 KB |
Output is correct |
44 |
Correct |
1387 ms |
130200 KB |
Output is correct |
45 |
Correct |
1441 ms |
123584 KB |
Output is correct |
46 |
Correct |
1468 ms |
112636 KB |
Output is correct |
47 |
Correct |
695 ms |
116420 KB |
Output is correct |
48 |
Correct |
678 ms |
112268 KB |
Output is correct |
49 |
Correct |
841 ms |
117268 KB |
Output is correct |
50 |
Correct |
942 ms |
131832 KB |
Output is correct |
51 |
Correct |
884 ms |
113092 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2066 ms |
329488 KB |
Output is correct |
2 |
Correct |
1645 ms |
202228 KB |
Output is correct |
3 |
Correct |
1997 ms |
464788 KB |
Output is correct |
4 |
Correct |
2015 ms |
365388 KB |
Output is correct |
5 |
Correct |
1400 ms |
185704 KB |
Output is correct |
6 |
Correct |
1510 ms |
195476 KB |
Output is correct |
7 |
Correct |
1879 ms |
464896 KB |
Output is correct |
8 |
Correct |
1868 ms |
366744 KB |
Output is correct |
9 |
Correct |
1784 ms |
322296 KB |
Output is correct |
10 |
Correct |
1660 ms |
245912 KB |
Output is correct |
11 |
Correct |
1028 ms |
208596 KB |
Output is correct |
12 |
Correct |
1169 ms |
239792 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Execution timed out |
5046 ms |
400104 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
18 ms |
64128 KB |
Output is correct |
2 |
Correct |
15 ms |
64088 KB |
Output is correct |
3 |
Correct |
15 ms |
64088 KB |
Output is correct |
4 |
Correct |
16 ms |
64092 KB |
Output is correct |
5 |
Correct |
15 ms |
64092 KB |
Output is correct |
6 |
Correct |
17 ms |
64344 KB |
Output is correct |
7 |
Correct |
17 ms |
64600 KB |
Output is correct |
8 |
Correct |
20 ms |
64620 KB |
Output is correct |
9 |
Correct |
17 ms |
64680 KB |
Output is correct |
10 |
Correct |
21 ms |
64532 KB |
Output is correct |
11 |
Correct |
22 ms |
64344 KB |
Output is correct |
12 |
Correct |
17 ms |
64348 KB |
Output is correct |
13 |
Correct |
17 ms |
64348 KB |
Output is correct |
14 |
Correct |
17 ms |
64348 KB |
Output is correct |
15 |
Correct |
17 ms |
64596 KB |
Output is correct |
16 |
Correct |
18 ms |
64604 KB |
Output is correct |
17 |
Correct |
17 ms |
64468 KB |
Output is correct |
18 |
Correct |
17 ms |
64604 KB |
Output is correct |
19 |
Correct |
17 ms |
64444 KB |
Output is correct |
20 |
Correct |
18 ms |
64344 KB |
Output is correct |
21 |
Correct |
15 ms |
64092 KB |
Output is correct |
22 |
Correct |
17 ms |
64468 KB |
Output is correct |
23 |
Correct |
17 ms |
64472 KB |
Output is correct |
24 |
Correct |
17 ms |
64600 KB |
Output is correct |
25 |
Correct |
17 ms |
64408 KB |
Output is correct |
26 |
Correct |
21 ms |
64344 KB |
Output is correct |
27 |
Correct |
16 ms |
64348 KB |
Output is correct |
28 |
Correct |
17 ms |
64348 KB |
Output is correct |
29 |
Correct |
17 ms |
64464 KB |
Output is correct |
30 |
Correct |
17 ms |
64344 KB |
Output is correct |
31 |
Correct |
1792 ms |
133072 KB |
Output is correct |
32 |
Correct |
110 ms |
75452 KB |
Output is correct |
33 |
Correct |
1621 ms |
114120 KB |
Output is correct |
34 |
Correct |
1671 ms |
133780 KB |
Output is correct |
35 |
Correct |
1765 ms |
127220 KB |
Output is correct |
36 |
Correct |
1616 ms |
113760 KB |
Output is correct |
37 |
Correct |
1184 ms |
118208 KB |
Output is correct |
38 |
Correct |
1139 ms |
109636 KB |
Output is correct |
39 |
Correct |
866 ms |
111684 KB |
Output is correct |
40 |
Correct |
927 ms |
109484 KB |
Output is correct |
41 |
Correct |
1405 ms |
131516 KB |
Output is correct |
42 |
Correct |
1393 ms |
131984 KB |
Output is correct |
43 |
Correct |
46 ms |
73156 KB |
Output is correct |
44 |
Correct |
1387 ms |
130200 KB |
Output is correct |
45 |
Correct |
1441 ms |
123584 KB |
Output is correct |
46 |
Correct |
1468 ms |
112636 KB |
Output is correct |
47 |
Correct |
695 ms |
116420 KB |
Output is correct |
48 |
Correct |
678 ms |
112268 KB |
Output is correct |
49 |
Correct |
841 ms |
117268 KB |
Output is correct |
50 |
Correct |
942 ms |
131832 KB |
Output is correct |
51 |
Correct |
884 ms |
113092 KB |
Output is correct |
52 |
Correct |
694 ms |
165400 KB |
Output is correct |
53 |
Correct |
693 ms |
165820 KB |
Output is correct |
54 |
Correct |
1043 ms |
151928 KB |
Output is correct |
55 |
Correct |
964 ms |
142640 KB |
Output is correct |
56 |
Correct |
837 ms |
145600 KB |
Output is correct |
57 |
Correct |
1237 ms |
134528 KB |
Output is correct |
58 |
Correct |
1022 ms |
145372 KB |
Output is correct |
59 |
Correct |
910 ms |
149952 KB |
Output is correct |
60 |
Correct |
1167 ms |
136364 KB |
Output is correct |
61 |
Correct |
46 ms |
79808 KB |
Output is correct |
62 |
Correct |
612 ms |
165312 KB |
Output is correct |
63 |
Correct |
857 ms |
155848 KB |
Output is correct |
64 |
Correct |
956 ms |
153080 KB |
Output is correct |
65 |
Correct |
1188 ms |
148824 KB |
Output is correct |
66 |
Correct |
1356 ms |
136312 KB |
Output is correct |
67 |
Correct |
143 ms |
85532 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
18 ms |
64128 KB |
Output is correct |
2 |
Correct |
15 ms |
64088 KB |
Output is correct |
3 |
Correct |
15 ms |
64088 KB |
Output is correct |
4 |
Correct |
16 ms |
64092 KB |
Output is correct |
5 |
Correct |
15 ms |
64092 KB |
Output is correct |
6 |
Correct |
17 ms |
64344 KB |
Output is correct |
7 |
Correct |
17 ms |
64600 KB |
Output is correct |
8 |
Correct |
20 ms |
64620 KB |
Output is correct |
9 |
Correct |
17 ms |
64680 KB |
Output is correct |
10 |
Correct |
21 ms |
64532 KB |
Output is correct |
11 |
Correct |
22 ms |
64344 KB |
Output is correct |
12 |
Correct |
17 ms |
64348 KB |
Output is correct |
13 |
Correct |
17 ms |
64348 KB |
Output is correct |
14 |
Correct |
17 ms |
64348 KB |
Output is correct |
15 |
Correct |
17 ms |
64596 KB |
Output is correct |
16 |
Correct |
18 ms |
64604 KB |
Output is correct |
17 |
Correct |
17 ms |
64468 KB |
Output is correct |
18 |
Correct |
17 ms |
64604 KB |
Output is correct |
19 |
Correct |
17 ms |
64444 KB |
Output is correct |
20 |
Correct |
18 ms |
64344 KB |
Output is correct |
21 |
Correct |
15 ms |
64092 KB |
Output is correct |
22 |
Correct |
17 ms |
64468 KB |
Output is correct |
23 |
Correct |
17 ms |
64472 KB |
Output is correct |
24 |
Correct |
17 ms |
64600 KB |
Output is correct |
25 |
Correct |
17 ms |
64408 KB |
Output is correct |
26 |
Correct |
21 ms |
64344 KB |
Output is correct |
27 |
Correct |
16 ms |
64348 KB |
Output is correct |
28 |
Correct |
17 ms |
64348 KB |
Output is correct |
29 |
Correct |
17 ms |
64464 KB |
Output is correct |
30 |
Correct |
17 ms |
64344 KB |
Output is correct |
31 |
Correct |
1792 ms |
133072 KB |
Output is correct |
32 |
Correct |
110 ms |
75452 KB |
Output is correct |
33 |
Correct |
1621 ms |
114120 KB |
Output is correct |
34 |
Correct |
1671 ms |
133780 KB |
Output is correct |
35 |
Correct |
1765 ms |
127220 KB |
Output is correct |
36 |
Correct |
1616 ms |
113760 KB |
Output is correct |
37 |
Correct |
1184 ms |
118208 KB |
Output is correct |
38 |
Correct |
1139 ms |
109636 KB |
Output is correct |
39 |
Correct |
866 ms |
111684 KB |
Output is correct |
40 |
Correct |
927 ms |
109484 KB |
Output is correct |
41 |
Correct |
1405 ms |
131516 KB |
Output is correct |
42 |
Correct |
1393 ms |
131984 KB |
Output is correct |
43 |
Correct |
46 ms |
73156 KB |
Output is correct |
44 |
Correct |
1387 ms |
130200 KB |
Output is correct |
45 |
Correct |
1441 ms |
123584 KB |
Output is correct |
46 |
Correct |
1468 ms |
112636 KB |
Output is correct |
47 |
Correct |
695 ms |
116420 KB |
Output is correct |
48 |
Correct |
678 ms |
112268 KB |
Output is correct |
49 |
Correct |
841 ms |
117268 KB |
Output is correct |
50 |
Correct |
942 ms |
131832 KB |
Output is correct |
51 |
Correct |
884 ms |
113092 KB |
Output is correct |
52 |
Correct |
2066 ms |
329488 KB |
Output is correct |
53 |
Correct |
1645 ms |
202228 KB |
Output is correct |
54 |
Correct |
1997 ms |
464788 KB |
Output is correct |
55 |
Correct |
2015 ms |
365388 KB |
Output is correct |
56 |
Correct |
1400 ms |
185704 KB |
Output is correct |
57 |
Correct |
1510 ms |
195476 KB |
Output is correct |
58 |
Correct |
1879 ms |
464896 KB |
Output is correct |
59 |
Correct |
1868 ms |
366744 KB |
Output is correct |
60 |
Correct |
1784 ms |
322296 KB |
Output is correct |
61 |
Correct |
1660 ms |
245912 KB |
Output is correct |
62 |
Correct |
1028 ms |
208596 KB |
Output is correct |
63 |
Correct |
1169 ms |
239792 KB |
Output is correct |
64 |
Execution timed out |
5046 ms |
400104 KB |
Time limit exceeded |
65 |
Halted |
0 ms |
0 KB |
- |