#include <bits/stdc++.h>
#define ll long long
#define ull unsigned ll
#define f first
#define s second
#define pii pair<int,int>
#define pll pair<ll,ll>
#define pb push_back
#define epb emplace_back
using namespace std;
const int nmax = 100001;
int mx[nmax][19][19];
int mn[nmax][19][19];
int get_mn(int l, int r, int ind){
int x = r - l + 1;
int u = log2(x);
return min(mn[l][u][ind], mn[r - (1 << u) + 1][u][ind]);
}
int get_mx(int l, int r, int ind){
int x = r - l + 1;
int u = log2(x);
return max(mx[l][u][ind], mx[r - (1 << u) + 1][u][ind]);
}
int main(){
ios_base::sync_with_stdio(false); cin.tie(0);
int n; cin >> n;
int k; cin >> k;
int m; cin >> m;
int a[m + 1], b[m + 1];
for(int i = 1; i <= n; i++){
for(int j = 0; j < 19; j++){
for(int x = 0; x < 19; x++)
mx[i][j][x] = -1e9, mn[i][j][x] = 1e9;
}
}
for(int i = 1; i <= m; i++){
int a, b; cin >> a >> b;
if(a < b){
mx[a][0][18] = max(mx[a][0][18], b);
}
if(a > b){
mn[a][0][18] = min(mn[a][0][18], b);
}
}
for(int i = 1; i < 19; i++){
for(int j = 1; j <= n; j++){
int R = min(j + (1 << (i - 1)), n);
mn[j][i][18] = min(mn[j][i - 1][18], mn[R][i - 1][18]);
mx[j][i][18] = max(mx[j][i - 1][18], mx[R][i - 1][18]);
}
}
for(int i = 1; i <= n; i++){
mn[i][0][0] = get_mn(i, min(n, i + k - 1), 18);
mx[i][0][0] = get_mx(max(i - k + 1, 1), i, 18);
mn[i][0][0] = min(mn[i][0][0], i);
mx[i][0][0] = max(mx[i][0][0], i);
}
for(int i = 1; i < 19; i++){
for(int j = 1; j <= n; j++){
int R = min(j + (1 << (i - 1)), n);
mn[j][i][0] = min(mn[j][i - 1][0], mn[R][i - 1][0]);
mx[j][i][0] = max(mx[j][i - 1][0], mx[R][i - 1][0]);
}
}
for(int i = 1; i < 18; i++){
for(int j = 1; j <= n; j++){
int L = mn[j][0][i - 1], R = mx[j][0][i - 1];
mn[j][0][i] = get_mn(L, R, i - 1);
mx[j][0][i] = get_mx(L, R, i - 1);
}
for(int x = 1; x < 19; x++){
for(int j = 1; j <= n; j++){
int R= min(j + (1 << (x - 1)), n);
mn[j][x][i] = min(mn[j][x - 1][i], mn[R][x - 1][i]);
mx[j][x][i] = max(mx[j][x - 1][i], mx[R][x - 1][i]);
}
}
}
// cout << get_mx(3, 9, 0);
int q; cin >> q;
while(q--){
int a, b; cin >> a >> b;
int L = a, R = a;
int ans = 0;
for(int j = 17; j >= 0; j--){
int l = get_mn(L, R, j);
int r = get_mx(L, R, j);
//cout << l << ' ' << r << "\n";
if(l <= b && r >= b) continue;
L = l, R = r;
//cout << l << ' ' << r << ' ' << j << "\n";
ans += (1 << j);
}
if(ans > (1 << 17)) cout << -1 << "\n";
else cout << ans + 1 << "\n";
}
return 0;
}
Compilation message
Main.cpp: In function 'int main()':
Main.cpp:35:9: warning: unused variable 'a' [-Wunused-variable]
35 | int a[m + 1], b[m + 1];
| ^
Main.cpp:35:19: warning: unused variable 'b' [-Wunused-variable]
35 | int a[m + 1], b[m + 1];
| ^
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
1108 KB |
Output is correct |
2 |
Correct |
1 ms |
1108 KB |
Output is correct |
3 |
Correct |
1 ms |
1108 KB |
Output is correct |
4 |
Correct |
2 ms |
1108 KB |
Output is correct |
5 |
Correct |
2 ms |
1108 KB |
Output is correct |
6 |
Correct |
2 ms |
1108 KB |
Output is correct |
7 |
Correct |
1 ms |
1108 KB |
Output is correct |
8 |
Correct |
1 ms |
1108 KB |
Output is correct |
9 |
Correct |
1 ms |
1108 KB |
Output is correct |
10 |
Correct |
1 ms |
340 KB |
Output is correct |
11 |
Correct |
2 ms |
1108 KB |
Output is correct |
12 |
Correct |
2 ms |
1108 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
1108 KB |
Output is correct |
2 |
Correct |
1 ms |
1108 KB |
Output is correct |
3 |
Correct |
1 ms |
1108 KB |
Output is correct |
4 |
Correct |
2 ms |
1108 KB |
Output is correct |
5 |
Correct |
2 ms |
1108 KB |
Output is correct |
6 |
Correct |
2 ms |
1108 KB |
Output is correct |
7 |
Correct |
1 ms |
1108 KB |
Output is correct |
8 |
Correct |
1 ms |
1108 KB |
Output is correct |
9 |
Correct |
1 ms |
1108 KB |
Output is correct |
10 |
Correct |
1 ms |
340 KB |
Output is correct |
11 |
Correct |
2 ms |
1108 KB |
Output is correct |
12 |
Correct |
2 ms |
1108 KB |
Output is correct |
13 |
Correct |
8 ms |
5972 KB |
Output is correct |
14 |
Correct |
8 ms |
5972 KB |
Output is correct |
15 |
Correct |
7 ms |
5972 KB |
Output is correct |
16 |
Correct |
8 ms |
5972 KB |
Output is correct |
17 |
Correct |
8 ms |
5972 KB |
Output is correct |
18 |
Correct |
7 ms |
5972 KB |
Output is correct |
19 |
Correct |
7 ms |
5716 KB |
Output is correct |
20 |
Correct |
7 ms |
5972 KB |
Output is correct |
21 |
Correct |
7 ms |
5972 KB |
Output is correct |
22 |
Correct |
7 ms |
5972 KB |
Output is correct |
23 |
Correct |
8 ms |
5972 KB |
Output is correct |
24 |
Correct |
8 ms |
6096 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1329 ms |
283756 KB |
Output is correct |
2 |
Correct |
1380 ms |
283800 KB |
Output is correct |
3 |
Correct |
1315 ms |
283996 KB |
Output is correct |
4 |
Correct |
1322 ms |
283740 KB |
Output is correct |
5 |
Correct |
1400 ms |
285088 KB |
Output is correct |
6 |
Correct |
1399 ms |
285200 KB |
Output is correct |
7 |
Correct |
1356 ms |
284924 KB |
Output is correct |
8 |
Correct |
1352 ms |
281236 KB |
Output is correct |
9 |
Correct |
1329 ms |
284108 KB |
Output is correct |
10 |
Correct |
1384 ms |
285200 KB |
Output is correct |
11 |
Correct |
1450 ms |
285200 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1462 ms |
284532 KB |
Output is correct |
2 |
Correct |
1493 ms |
285820 KB |
Output is correct |
3 |
Correct |
1493 ms |
284800 KB |
Output is correct |
4 |
Correct |
1328 ms |
285436 KB |
Output is correct |
5 |
Correct |
1372 ms |
282888 KB |
Output is correct |
6 |
Correct |
1363 ms |
285696 KB |
Output is correct |
7 |
Correct |
1462 ms |
285824 KB |
Output is correct |
8 |
Correct |
1489 ms |
285848 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1425 ms |
285820 KB |
Output is correct |
2 |
Correct |
1587 ms |
284876 KB |
Output is correct |
3 |
Correct |
1542 ms |
284280 KB |
Output is correct |
4 |
Correct |
1410 ms |
283892 KB |
Output is correct |
5 |
Correct |
1399 ms |
283552 KB |
Output is correct |
6 |
Correct |
1354 ms |
283512 KB |
Output is correct |
7 |
Correct |
1459 ms |
284668 KB |
Output is correct |
8 |
Correct |
1 ms |
1108 KB |
Output is correct |
9 |
Correct |
7 ms |
5972 KB |
Output is correct |
10 |
Correct |
1611 ms |
285200 KB |
Output is correct |
11 |
Correct |
1356 ms |
285692 KB |
Output is correct |
12 |
Correct |
1362 ms |
282884 KB |
Output is correct |
13 |
Correct |
1370 ms |
285692 KB |
Output is correct |
14 |
Correct |
2 ms |
1108 KB |
Output is correct |
15 |
Correct |
8 ms |
5972 KB |
Output is correct |
16 |
Correct |
1631 ms |
285196 KB |
Output is correct |
17 |
Correct |
1797 ms |
285884 KB |
Output is correct |
18 |
Correct |
1836 ms |
285900 KB |
Output is correct |
19 |
Correct |
1521 ms |
285824 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
1108 KB |
Output is correct |
2 |
Correct |
1 ms |
1108 KB |
Output is correct |
3 |
Correct |
1 ms |
1108 KB |
Output is correct |
4 |
Correct |
2 ms |
1108 KB |
Output is correct |
5 |
Correct |
2 ms |
1108 KB |
Output is correct |
6 |
Correct |
2 ms |
1108 KB |
Output is correct |
7 |
Correct |
1 ms |
1108 KB |
Output is correct |
8 |
Correct |
1 ms |
1108 KB |
Output is correct |
9 |
Correct |
1 ms |
1108 KB |
Output is correct |
10 |
Correct |
1 ms |
340 KB |
Output is correct |
11 |
Correct |
2 ms |
1108 KB |
Output is correct |
12 |
Correct |
2 ms |
1108 KB |
Output is correct |
13 |
Correct |
8 ms |
5972 KB |
Output is correct |
14 |
Correct |
8 ms |
5972 KB |
Output is correct |
15 |
Correct |
7 ms |
5972 KB |
Output is correct |
16 |
Correct |
8 ms |
5972 KB |
Output is correct |
17 |
Correct |
8 ms |
5972 KB |
Output is correct |
18 |
Correct |
7 ms |
5972 KB |
Output is correct |
19 |
Correct |
7 ms |
5716 KB |
Output is correct |
20 |
Correct |
7 ms |
5972 KB |
Output is correct |
21 |
Correct |
7 ms |
5972 KB |
Output is correct |
22 |
Correct |
7 ms |
5972 KB |
Output is correct |
23 |
Correct |
8 ms |
5972 KB |
Output is correct |
24 |
Correct |
8 ms |
6096 KB |
Output is correct |
25 |
Correct |
1329 ms |
283756 KB |
Output is correct |
26 |
Correct |
1380 ms |
283800 KB |
Output is correct |
27 |
Correct |
1315 ms |
283996 KB |
Output is correct |
28 |
Correct |
1322 ms |
283740 KB |
Output is correct |
29 |
Correct |
1400 ms |
285088 KB |
Output is correct |
30 |
Correct |
1399 ms |
285200 KB |
Output is correct |
31 |
Correct |
1356 ms |
284924 KB |
Output is correct |
32 |
Correct |
1352 ms |
281236 KB |
Output is correct |
33 |
Correct |
1329 ms |
284108 KB |
Output is correct |
34 |
Correct |
1384 ms |
285200 KB |
Output is correct |
35 |
Correct |
1450 ms |
285200 KB |
Output is correct |
36 |
Correct |
1462 ms |
284532 KB |
Output is correct |
37 |
Correct |
1493 ms |
285820 KB |
Output is correct |
38 |
Correct |
1493 ms |
284800 KB |
Output is correct |
39 |
Correct |
1328 ms |
285436 KB |
Output is correct |
40 |
Correct |
1372 ms |
282888 KB |
Output is correct |
41 |
Correct |
1363 ms |
285696 KB |
Output is correct |
42 |
Correct |
1462 ms |
285824 KB |
Output is correct |
43 |
Correct |
1489 ms |
285848 KB |
Output is correct |
44 |
Correct |
1425 ms |
285820 KB |
Output is correct |
45 |
Correct |
1587 ms |
284876 KB |
Output is correct |
46 |
Correct |
1542 ms |
284280 KB |
Output is correct |
47 |
Correct |
1410 ms |
283892 KB |
Output is correct |
48 |
Correct |
1399 ms |
283552 KB |
Output is correct |
49 |
Correct |
1354 ms |
283512 KB |
Output is correct |
50 |
Correct |
1459 ms |
284668 KB |
Output is correct |
51 |
Correct |
1 ms |
1108 KB |
Output is correct |
52 |
Correct |
7 ms |
5972 KB |
Output is correct |
53 |
Correct |
1611 ms |
285200 KB |
Output is correct |
54 |
Correct |
1356 ms |
285692 KB |
Output is correct |
55 |
Correct |
1362 ms |
282884 KB |
Output is correct |
56 |
Correct |
1370 ms |
285692 KB |
Output is correct |
57 |
Correct |
2 ms |
1108 KB |
Output is correct |
58 |
Correct |
8 ms |
5972 KB |
Output is correct |
59 |
Correct |
1631 ms |
285196 KB |
Output is correct |
60 |
Correct |
1797 ms |
285884 KB |
Output is correct |
61 |
Correct |
1836 ms |
285900 KB |
Output is correct |
62 |
Correct |
1521 ms |
285824 KB |
Output is correct |
63 |
Correct |
1499 ms |
284540 KB |
Output is correct |
64 |
Correct |
1604 ms |
284672 KB |
Output is correct |
65 |
Correct |
1475 ms |
284544 KB |
Output is correct |
66 |
Correct |
1439 ms |
285816 KB |
Output is correct |
67 |
Correct |
1485 ms |
285928 KB |
Output is correct |
68 |
Correct |
1692 ms |
282880 KB |
Output is correct |
69 |
Correct |
1338 ms |
285688 KB |
Output is correct |
70 |
Correct |
1610 ms |
285820 KB |
Output is correct |
71 |
Correct |
1382 ms |
285948 KB |
Output is correct |