#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
#define fi first
#define se second
#define mp make_pair
#define fastIO ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
const int N = (int)1e5 + 1;
const int LOG = 18;
int L[LOG][N];
int R[LOG][N];
multiset<int> add[N];
multiset<int> del[N];
int A[N];
int B[N];
pii segt[LOG][N * 4 + 512];
void build(int dep, int node, int lef, int rig){
if(lef == rig){
segt[dep][node] = mp(L[dep][lef], R[dep][rig]);
return;
}
int mid = (lef + rig) / 2;
build(dep, node * 2, lef, mid);
build(dep, node * 2 + 1, mid + 1, rig);
segt[dep][node].fi = min(segt[dep][node*2].fi, segt[dep][node*2+1].fi);
segt[dep][node].se = max(segt[dep][node*2].se, segt[dep][node*2+1].se);
}
pii get(int dep, int node, int cl, int cr, int tl, int tr){
if(cr < tl || cl > tr){
return mp((int)1e9,-1);
}
if(cl >= tl && cr <= tr){
return segt[dep][node];
}
int mid = (cl + cr) / 2;
pii A = get(dep, node * 2, cl, mid, tl, tr);
pii B = get(dep, node * 2 + 1, mid + 1, cr, tl, tr);
return mp(min(A.fi, B.fi), max(A.se, B.se));
}
int main(){
fastIO;
//freopen("in.txt","r",stdin);
int n, k;
cin >> n >> k;
int m;
cin >> m;
int seg;
for(int id = 1; id <= m ;id ++ ){
cin >> A[id] >> B[id];
if(A[id] < B[id]){
seg = min(B[id], A[id] + k - 1);
add[A[id]].insert(B[id]);
del[seg + 1].insert(B[id]);
}
else{
seg = max(A[id] - k + 1, B[id]);
add[seg].insert(B[id]);
del[A[id] + 1].insert(B[id]);
}
}
multiset<int> pp;
int low;
for(int iq = 1; iq <= n; iq ++ ){
for(auto x : add[iq]){
pp.insert(x);
}
for(auto x : del[iq]){
pp.erase(pp.find(x));
}
L[0][iq] = R[0][iq] = iq;
if(!pp.empty()){
auto it = pp.begin();
L[0][iq] = min(L[0][iq], *it);
it = pp.end();
it -- ;
R[0][iq] = max(R[0][iq], *it);
}
}
pii F;
for(int c = 1; c < LOG; c ++ ){
build(c - 1, 1, 1, n);
for(int iq = 1; iq <= n; iq ++ ){
F = get(c - 1, 1, 1, n, L[c-1][iq], R[c-1][iq]);
L[c][iq] = F.fi;
R[c][iq] = F.se;
}
}
build(LOG - 1, 1, 1, n);
int q;
cin >> q;
int s, t;
int lef, rig;
int dep;
for(int iq = 1; iq <= q; iq ++ ){
cin >> s >> t;
lef = rig = s;
dep = 0;
for(int lg = LOG - 1; lg >= 0 ; lg -- ){
F = get(lg, 1, 1, n, lef, rig);
if(t < F.fi || t > F.se){
lef = F.fi;
rig = F.se;
dep += (1 << lg);
}
}
F = get(0, 1, 1, n, lef, rig);
if(F.fi <= t && t <= F.se){
cout << dep + 1 << "\n";
}
else{
cout << -1 << "\n";
}
}
return 0;
}
Compilation message
Main.cpp: In function 'int main()':
Main.cpp:73:9: warning: unused variable 'low' [-Wunused-variable]
73 | int low;
| ^~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
6 ms |
10188 KB |
Output is correct |
2 |
Correct |
7 ms |
10252 KB |
Output is correct |
3 |
Correct |
5 ms |
10188 KB |
Output is correct |
4 |
Correct |
6 ms |
10188 KB |
Output is correct |
5 |
Correct |
7 ms |
10188 KB |
Output is correct |
6 |
Correct |
6 ms |
10188 KB |
Output is correct |
7 |
Correct |
6 ms |
10188 KB |
Output is correct |
8 |
Correct |
6 ms |
10196 KB |
Output is correct |
9 |
Correct |
6 ms |
10188 KB |
Output is correct |
10 |
Correct |
5 ms |
9932 KB |
Output is correct |
11 |
Correct |
7 ms |
10204 KB |
Output is correct |
12 |
Correct |
6 ms |
10200 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
6 ms |
10188 KB |
Output is correct |
2 |
Correct |
7 ms |
10252 KB |
Output is correct |
3 |
Correct |
5 ms |
10188 KB |
Output is correct |
4 |
Correct |
6 ms |
10188 KB |
Output is correct |
5 |
Correct |
7 ms |
10188 KB |
Output is correct |
6 |
Correct |
6 ms |
10188 KB |
Output is correct |
7 |
Correct |
6 ms |
10188 KB |
Output is correct |
8 |
Correct |
6 ms |
10196 KB |
Output is correct |
9 |
Correct |
6 ms |
10188 KB |
Output is correct |
10 |
Correct |
5 ms |
9932 KB |
Output is correct |
11 |
Correct |
7 ms |
10204 KB |
Output is correct |
12 |
Correct |
6 ms |
10200 KB |
Output is correct |
13 |
Correct |
17 ms |
11044 KB |
Output is correct |
14 |
Correct |
15 ms |
11048 KB |
Output is correct |
15 |
Correct |
10 ms |
10988 KB |
Output is correct |
16 |
Correct |
11 ms |
11084 KB |
Output is correct |
17 |
Correct |
14 ms |
11084 KB |
Output is correct |
18 |
Correct |
10 ms |
11084 KB |
Output is correct |
19 |
Correct |
13 ms |
11128 KB |
Output is correct |
20 |
Correct |
10 ms |
11124 KB |
Output is correct |
21 |
Correct |
8 ms |
11048 KB |
Output is correct |
22 |
Correct |
13 ms |
11144 KB |
Output is correct |
23 |
Correct |
13 ms |
11084 KB |
Output is correct |
24 |
Correct |
15 ms |
11040 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
438 ms |
69072 KB |
Output is correct |
2 |
Correct |
415 ms |
68924 KB |
Output is correct |
3 |
Correct |
495 ms |
70552 KB |
Output is correct |
4 |
Correct |
392 ms |
68360 KB |
Output is correct |
5 |
Runtime error |
101 ms |
43052 KB |
Execution killed with signal 11 |
6 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
556 ms |
71720 KB |
Output is correct |
2 |
Runtime error |
90 ms |
41284 KB |
Execution killed with signal 11 |
3 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Runtime error |
78 ms |
41356 KB |
Execution killed with signal 11 |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
6 ms |
10188 KB |
Output is correct |
2 |
Correct |
7 ms |
10252 KB |
Output is correct |
3 |
Correct |
5 ms |
10188 KB |
Output is correct |
4 |
Correct |
6 ms |
10188 KB |
Output is correct |
5 |
Correct |
7 ms |
10188 KB |
Output is correct |
6 |
Correct |
6 ms |
10188 KB |
Output is correct |
7 |
Correct |
6 ms |
10188 KB |
Output is correct |
8 |
Correct |
6 ms |
10196 KB |
Output is correct |
9 |
Correct |
6 ms |
10188 KB |
Output is correct |
10 |
Correct |
5 ms |
9932 KB |
Output is correct |
11 |
Correct |
7 ms |
10204 KB |
Output is correct |
12 |
Correct |
6 ms |
10200 KB |
Output is correct |
13 |
Correct |
17 ms |
11044 KB |
Output is correct |
14 |
Correct |
15 ms |
11048 KB |
Output is correct |
15 |
Correct |
10 ms |
10988 KB |
Output is correct |
16 |
Correct |
11 ms |
11084 KB |
Output is correct |
17 |
Correct |
14 ms |
11084 KB |
Output is correct |
18 |
Correct |
10 ms |
11084 KB |
Output is correct |
19 |
Correct |
13 ms |
11128 KB |
Output is correct |
20 |
Correct |
10 ms |
11124 KB |
Output is correct |
21 |
Correct |
8 ms |
11048 KB |
Output is correct |
22 |
Correct |
13 ms |
11144 KB |
Output is correct |
23 |
Correct |
13 ms |
11084 KB |
Output is correct |
24 |
Correct |
15 ms |
11040 KB |
Output is correct |
25 |
Correct |
438 ms |
69072 KB |
Output is correct |
26 |
Correct |
415 ms |
68924 KB |
Output is correct |
27 |
Correct |
495 ms |
70552 KB |
Output is correct |
28 |
Correct |
392 ms |
68360 KB |
Output is correct |
29 |
Runtime error |
101 ms |
43052 KB |
Execution killed with signal 11 |
30 |
Halted |
0 ms |
0 KB |
- |