#include <bits/stdc++.h>
using namespace std;
#define int long long
#define ii pair<int,int>
typedef vector<int> vi;
#define iii tuple<int,int,int>
typedef vector<ii> vii;
typedef vector<iii> viii;
typedef map<int,int> mii;
struct node{
int32_t s,e;
int mn,mx,sum,add_val,set_val;
bool lset;
node *l, *r;
node (int _s, int _e, int A[]=NULL): s(_s), e(_e), mn(0), mx(0), sum(0), lset(0), add_val(0), set_val(0), l(NULL), r(NULL){
if (A==NULL) return;
if (s==e) mn=mx=sum=A[s];
else{
l=new node(s, (s+e)>>1,A), r=new node((s+e+2)>>1,e,A);
combine();
}
}
void create_children(){
if (s==e) return;
if (l!=NULL) return;
int m=(s+e)>>1;
l=new node(s,m);
r=new node(m+1,e);
}
void self_set(int v){
lset=1;
mn=mx=set_val=v;
sum=v*(e-s+1);
add_val=0;
}
void self_add(int v){
if (lset) {self_set(v+set_val); return;}
mn+=v, mx+=v, add_val+=v;
sum+=v*(e-s+1);
}
void lazy(){
if (s==e) return;
if (lset){
l->self_set(set_val), r->self_set(set_val);
set_val=0; lset=0;
}
if (add_val!=0){
l->self_add(add_val), r->self_add(add_val);
add_val=0;
}
}
void combine(){
if (l==NULL) return;
sum=l->sum +r->sum;
mn=min(l->mn,r->mn);
mx=max(l->mx,r->mx);
}
#define UPDATE(name)\
void name(int x, int y, int v){\
if (s==x&&e==y) {self_##name(v); return;}\
int m=(s+e)>>1; \
create_children(); lazy();\
if (x<=m) l->name(x,min(y,m),v);\
if (y>m) r->name(max(x,m+1),y,v);\
combine();\
}
UPDATE(add)
UPDATE(set)
#define QUERY(name,fn,var,lazyfn)\
int range_##name(int x, int y){\
if (s==x&&e==y) return var;\
if (l==NULL||lset) return lazyfn(var);\
int m=(s+e)>>1; lazy();\
if (y<=m) return l->range_##name(x,y);\
if (x>m) return r->range_##name(x,y);\
return fn(l->range_##name(x,m), r->range_##name(m+1,y));\
}
#define SAME(var) (var)
#define PART(var) ((var)/(e-s+1)*(y-x+1))
#define SUM(a,b) ((a)+(b))
QUERY(min,min,mn,SAME)
QUERY(max,max,mx,SAME)
QUERY(sum,SUM,sum,PART)
~node(){
if (l!=NULL) delete l;
if (r!=NULL) delete r;
}
}*root;
int32_t main(){
int N,K,Q;
cin>>N>>K>>Q;
int X[N+5],T[N+5],A[N+5],B[N+5];
for (int i=0; i<N; i++){
cin>>X[i]>>T[i]>>A[i]>>B[i];
}
while (Q--){
int L, Y; cin>>L>>Y;
root = new node(1,K+1);
root->set(1,K+1,-1);
for (int i=0; i<N; i++){
if (A[i]<=Y && B[i]>=Y){
int curr_ina = root->range_max(T[i],T[i]);
if (curr_ina==-1) root->set(T[i],T[i],abs(X[i]-L));
else{
root->set(T[i],T[i],min(curr_ina, abs(X[i]-L)));
}
}
}
if (root->range_min(1,K)==-1) cout<<"-1";
else cout<<root->range_max(1,K);
//for (int i=1; i<=K; i++) cout<<root->range_min(i,i)<<" ";
cout<<"\n";
}
}
Compilation message
new_home.cpp: In constructor 'node::node(long long int, long long int, long long int*)':
new_home.cpp:14:7: warning: 'node::lset' will be initialized after [-Wreorder]
14 | bool lset;
| ^~~~
new_home.cpp:13:16: warning: 'long long int node::add_val' [-Wreorder]
13 | int mn,mx,sum,add_val,set_val;
| ^~~~~~~
new_home.cpp:16:2: warning: when initialized here [-Wreorder]
16 | node (int _s, int _e, int A[]=NULL): s(_s), e(_e), mn(0), mx(0), sum(0), lset(0), add_val(0), set_val(0), l(NULL), r(NULL){
| ^~~~
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
344 KB |
Output is correct |
2 |
Correct |
1 ms |
348 KB |
Output is correct |
3 |
Correct |
0 ms |
348 KB |
Output is correct |
4 |
Correct |
1 ms |
344 KB |
Output is correct |
5 |
Correct |
4 ms |
860 KB |
Output is correct |
6 |
Correct |
6 ms |
860 KB |
Output is correct |
7 |
Correct |
22 ms |
15468 KB |
Output is correct |
8 |
Correct |
16 ms |
7600 KB |
Output is correct |
9 |
Correct |
30 ms |
18768 KB |
Output is correct |
10 |
Correct |
7 ms |
1116 KB |
Output is correct |
11 |
Correct |
3 ms |
1372 KB |
Output is correct |
12 |
Correct |
3 ms |
604 KB |
Output is correct |
13 |
Correct |
2 ms |
528 KB |
Output is correct |
14 |
Correct |
2 ms |
604 KB |
Output is correct |
15 |
Correct |
16 ms |
9488 KB |
Output is correct |
16 |
Correct |
19 ms |
13124 KB |
Output is correct |
17 |
Correct |
6 ms |
3932 KB |
Output is correct |
18 |
Correct |
12 ms |
9384 KB |
Output is correct |
19 |
Correct |
17 ms |
13148 KB |
Output is correct |
20 |
Correct |
9 ms |
4184 KB |
Output is correct |
21 |
Correct |
40 ms |
25388 KB |
Output is correct |
22 |
Correct |
29 ms |
21480 KB |
Output is correct |
23 |
Correct |
18 ms |
11868 KB |
Output is correct |
24 |
Correct |
13 ms |
8028 KB |
Output is correct |
25 |
Correct |
5 ms |
2908 KB |
Output is correct |
26 |
Correct |
2 ms |
600 KB |
Output is correct |
27 |
Correct |
5 ms |
2660 KB |
Output is correct |
28 |
Correct |
2 ms |
860 KB |
Output is correct |
29 |
Correct |
2 ms |
604 KB |
Output is correct |
30 |
Correct |
2 ms |
348 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
344 KB |
Output is correct |
2 |
Correct |
1 ms |
348 KB |
Output is correct |
3 |
Correct |
0 ms |
348 KB |
Output is correct |
4 |
Correct |
1 ms |
344 KB |
Output is correct |
5 |
Correct |
4 ms |
860 KB |
Output is correct |
6 |
Correct |
6 ms |
860 KB |
Output is correct |
7 |
Correct |
22 ms |
15468 KB |
Output is correct |
8 |
Correct |
16 ms |
7600 KB |
Output is correct |
9 |
Correct |
30 ms |
18768 KB |
Output is correct |
10 |
Correct |
7 ms |
1116 KB |
Output is correct |
11 |
Correct |
3 ms |
1372 KB |
Output is correct |
12 |
Correct |
3 ms |
604 KB |
Output is correct |
13 |
Correct |
2 ms |
528 KB |
Output is correct |
14 |
Correct |
2 ms |
604 KB |
Output is correct |
15 |
Correct |
16 ms |
9488 KB |
Output is correct |
16 |
Correct |
19 ms |
13124 KB |
Output is correct |
17 |
Correct |
6 ms |
3932 KB |
Output is correct |
18 |
Correct |
12 ms |
9384 KB |
Output is correct |
19 |
Correct |
17 ms |
13148 KB |
Output is correct |
20 |
Correct |
9 ms |
4184 KB |
Output is correct |
21 |
Correct |
40 ms |
25388 KB |
Output is correct |
22 |
Correct |
29 ms |
21480 KB |
Output is correct |
23 |
Correct |
18 ms |
11868 KB |
Output is correct |
24 |
Correct |
13 ms |
8028 KB |
Output is correct |
25 |
Correct |
5 ms |
2908 KB |
Output is correct |
26 |
Correct |
2 ms |
600 KB |
Output is correct |
27 |
Correct |
5 ms |
2660 KB |
Output is correct |
28 |
Correct |
2 ms |
860 KB |
Output is correct |
29 |
Correct |
2 ms |
604 KB |
Output is correct |
30 |
Correct |
2 ms |
348 KB |
Output is correct |
31 |
Execution timed out |
5094 ms |
68928 KB |
Time limit exceeded |
32 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Execution timed out |
5054 ms |
368920 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Execution timed out |
5107 ms |
125756 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
344 KB |
Output is correct |
2 |
Correct |
1 ms |
348 KB |
Output is correct |
3 |
Correct |
0 ms |
348 KB |
Output is correct |
4 |
Correct |
1 ms |
344 KB |
Output is correct |
5 |
Correct |
4 ms |
860 KB |
Output is correct |
6 |
Correct |
6 ms |
860 KB |
Output is correct |
7 |
Correct |
22 ms |
15468 KB |
Output is correct |
8 |
Correct |
16 ms |
7600 KB |
Output is correct |
9 |
Correct |
30 ms |
18768 KB |
Output is correct |
10 |
Correct |
7 ms |
1116 KB |
Output is correct |
11 |
Correct |
3 ms |
1372 KB |
Output is correct |
12 |
Correct |
3 ms |
604 KB |
Output is correct |
13 |
Correct |
2 ms |
528 KB |
Output is correct |
14 |
Correct |
2 ms |
604 KB |
Output is correct |
15 |
Correct |
16 ms |
9488 KB |
Output is correct |
16 |
Correct |
19 ms |
13124 KB |
Output is correct |
17 |
Correct |
6 ms |
3932 KB |
Output is correct |
18 |
Correct |
12 ms |
9384 KB |
Output is correct |
19 |
Correct |
17 ms |
13148 KB |
Output is correct |
20 |
Correct |
9 ms |
4184 KB |
Output is correct |
21 |
Correct |
40 ms |
25388 KB |
Output is correct |
22 |
Correct |
29 ms |
21480 KB |
Output is correct |
23 |
Correct |
18 ms |
11868 KB |
Output is correct |
24 |
Correct |
13 ms |
8028 KB |
Output is correct |
25 |
Correct |
5 ms |
2908 KB |
Output is correct |
26 |
Correct |
2 ms |
600 KB |
Output is correct |
27 |
Correct |
5 ms |
2660 KB |
Output is correct |
28 |
Correct |
2 ms |
860 KB |
Output is correct |
29 |
Correct |
2 ms |
604 KB |
Output is correct |
30 |
Correct |
2 ms |
348 KB |
Output is correct |
31 |
Execution timed out |
5094 ms |
68928 KB |
Time limit exceeded |
32 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
344 KB |
Output is correct |
2 |
Correct |
1 ms |
348 KB |
Output is correct |
3 |
Correct |
0 ms |
348 KB |
Output is correct |
4 |
Correct |
1 ms |
344 KB |
Output is correct |
5 |
Correct |
4 ms |
860 KB |
Output is correct |
6 |
Correct |
6 ms |
860 KB |
Output is correct |
7 |
Correct |
22 ms |
15468 KB |
Output is correct |
8 |
Correct |
16 ms |
7600 KB |
Output is correct |
9 |
Correct |
30 ms |
18768 KB |
Output is correct |
10 |
Correct |
7 ms |
1116 KB |
Output is correct |
11 |
Correct |
3 ms |
1372 KB |
Output is correct |
12 |
Correct |
3 ms |
604 KB |
Output is correct |
13 |
Correct |
2 ms |
528 KB |
Output is correct |
14 |
Correct |
2 ms |
604 KB |
Output is correct |
15 |
Correct |
16 ms |
9488 KB |
Output is correct |
16 |
Correct |
19 ms |
13124 KB |
Output is correct |
17 |
Correct |
6 ms |
3932 KB |
Output is correct |
18 |
Correct |
12 ms |
9384 KB |
Output is correct |
19 |
Correct |
17 ms |
13148 KB |
Output is correct |
20 |
Correct |
9 ms |
4184 KB |
Output is correct |
21 |
Correct |
40 ms |
25388 KB |
Output is correct |
22 |
Correct |
29 ms |
21480 KB |
Output is correct |
23 |
Correct |
18 ms |
11868 KB |
Output is correct |
24 |
Correct |
13 ms |
8028 KB |
Output is correct |
25 |
Correct |
5 ms |
2908 KB |
Output is correct |
26 |
Correct |
2 ms |
600 KB |
Output is correct |
27 |
Correct |
5 ms |
2660 KB |
Output is correct |
28 |
Correct |
2 ms |
860 KB |
Output is correct |
29 |
Correct |
2 ms |
604 KB |
Output is correct |
30 |
Correct |
2 ms |
348 KB |
Output is correct |
31 |
Execution timed out |
5094 ms |
68928 KB |
Time limit exceeded |
32 |
Halted |
0 ms |
0 KB |
- |