#include <bits/stdc++.h>
#define mp make_pair
#define eb emplace_back
#define F first
#define S second
#define all(x) x.begin(), x.end()
#define svec(x) sort(all(x))
#define press(x) x.erase(unique(all(x)), x.end());
using namespace std;
typedef long long LL;
typedef pair<int, int> pii;
typedef pair<int, LL> pil;
typedef pair<LL, int> pli;
typedef pair<LL, LL> pll;
const int INF=1e9;
const LL LLINF=1e18;
int n, k, m, q, l[100010], r[100010];
multiset<int> ms;
vector<int> vcl[100010], vcr[100010];
struct SEG{
pii tree[400010];
pii func(pii a, pii b){return mp(min(a.F, b.F), max(a.S, b.S));}
void upd(int point, int s, int e, int num, pii val){
if(s==e){
tree[point]=val;
return;
}
if(num<=(s+e)/2)upd(point*2, s, (s+e)/2, num, val);
else upd(point*2+1, (s+e)/2+1, e, num, val);
tree[point]=func(tree[point*2], tree[point*2+1]);
}
pii query(int point, int s, int e, int a, int b){
if(e<a||s>b)return mp(INF, 0);
if(a<=s&&e<=b)return tree[point];
return func(query(point*2, s, (s+e)/2, a, b), query(point*2+1, (s+e)/2+1, e, a, b));
}
}seg[19];
int main(){
scanf("%d %d %d", &n, &k, &m);
for(int i=1; i<=m; i++){
int a, b;
scanf("%d %d", &a, &b);
if(a<b)vcl[a].eb(b);
else vcr[a].eb(b);
}
for(int i=1; i<=n; i++){
for(auto j:vcl[i])ms.insert(j);
r[i]=i;
if(ms.size())r[i]=max(r[i], *ms.rbegin());
if(i>=k){
for(auto j:vcl[i-k+1])ms.erase(ms.find(j));
}
}
ms.clear();
for(int i=n; i>=1; i--){
for(auto j:vcr[i])ms.insert(j);
l[i]=i;
if(ms.size())l[i]=min(l[i], *ms.begin());
if(i<=n-k+1){
for(auto j:vcr[i+k-1])ms.erase(ms.find(j));
}
}
for(int i=1; i<=n; i++)seg[0].upd(1, 1, n, i, mp(l[i], r[i]));
for(int i=1; i<=18; i++){
for(int j=1; j<=n; j++){
pii tmp=seg[i-1].query(1, 1, n, j, j);
seg[i].upd(1, 1, n, j, seg[i-1].query(1, 1, n, tmp.F, tmp.S));
}
}
scanf("%d", &q);
for(int i=1; i<=q; i++){
int a, b, ans=0;
scanf("%d %d", &a, &b);
pii r=mp(a, a);
for(int j=18; j>=0; j--){
pii r2=seg[j].query(1, 1, n, r.F, r.S);
if(b<r2.F||b>r2.S)r=r2, ans+=(1<<j);
}
if(ans>n)puts("-1");
else printf("%d\n", ans+1);
}
}
Compilation message
Main.cpp: In function 'int main()':
Main.cpp:42:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
42 | scanf("%d %d %d", &n, &k, &m);
| ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:45:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
45 | scanf("%d %d", &a, &b);
| ~~~~~^~~~~~~~~~~~~~~~~
Main.cpp:73:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
73 | scanf("%d", &q);
| ~~~~~^~~~~~~~~~
Main.cpp:76:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
76 | scanf("%d %d", &a, &b);
| ~~~~~^~~~~~~~~~~~~~~~~
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
6 ms |
5196 KB |
Output is correct |
2 |
Correct |
5 ms |
5196 KB |
Output is correct |
3 |
Correct |
4 ms |
5196 KB |
Output is correct |
4 |
Correct |
4 ms |
5196 KB |
Output is correct |
5 |
Correct |
4 ms |
5196 KB |
Output is correct |
6 |
Correct |
3 ms |
5324 KB |
Output is correct |
7 |
Correct |
4 ms |
5324 KB |
Output is correct |
8 |
Correct |
3 ms |
5324 KB |
Output is correct |
9 |
Correct |
4 ms |
5196 KB |
Output is correct |
10 |
Correct |
3 ms |
5068 KB |
Output is correct |
11 |
Correct |
4 ms |
5196 KB |
Output is correct |
12 |
Correct |
5 ms |
5248 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
6 ms |
5196 KB |
Output is correct |
2 |
Correct |
5 ms |
5196 KB |
Output is correct |
3 |
Correct |
4 ms |
5196 KB |
Output is correct |
4 |
Correct |
4 ms |
5196 KB |
Output is correct |
5 |
Correct |
4 ms |
5196 KB |
Output is correct |
6 |
Correct |
3 ms |
5324 KB |
Output is correct |
7 |
Correct |
4 ms |
5324 KB |
Output is correct |
8 |
Correct |
3 ms |
5324 KB |
Output is correct |
9 |
Correct |
4 ms |
5196 KB |
Output is correct |
10 |
Correct |
3 ms |
5068 KB |
Output is correct |
11 |
Correct |
4 ms |
5196 KB |
Output is correct |
12 |
Correct |
5 ms |
5248 KB |
Output is correct |
13 |
Correct |
19 ms |
5836 KB |
Output is correct |
14 |
Correct |
21 ms |
5820 KB |
Output is correct |
15 |
Correct |
12 ms |
5776 KB |
Output is correct |
16 |
Correct |
12 ms |
5884 KB |
Output is correct |
17 |
Correct |
16 ms |
5836 KB |
Output is correct |
18 |
Correct |
12 ms |
5836 KB |
Output is correct |
19 |
Correct |
13 ms |
5836 KB |
Output is correct |
20 |
Correct |
12 ms |
5856 KB |
Output is correct |
21 |
Correct |
9 ms |
5852 KB |
Output is correct |
22 |
Correct |
15 ms |
5876 KB |
Output is correct |
23 |
Correct |
19 ms |
5836 KB |
Output is correct |
24 |
Correct |
16 ms |
5836 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
875 ms |
47364 KB |
Output is correct |
2 |
Correct |
785 ms |
47348 KB |
Output is correct |
3 |
Correct |
811 ms |
47844 KB |
Output is correct |
4 |
Correct |
674 ms |
47180 KB |
Output is correct |
5 |
Correct |
531 ms |
50756 KB |
Output is correct |
6 |
Correct |
726 ms |
51016 KB |
Output is correct |
7 |
Correct |
560 ms |
55816 KB |
Output is correct |
8 |
Correct |
519 ms |
48740 KB |
Output is correct |
9 |
Correct |
467 ms |
49524 KB |
Output is correct |
10 |
Correct |
678 ms |
48836 KB |
Output is correct |
11 |
Correct |
719 ms |
53488 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
852 ms |
49948 KB |
Output is correct |
2 |
Correct |
805 ms |
53248 KB |
Output is correct |
3 |
Correct |
984 ms |
50528 KB |
Output is correct |
4 |
Correct |
623 ms |
55808 KB |
Output is correct |
5 |
Correct |
642 ms |
53312 KB |
Output is correct |
6 |
Correct |
626 ms |
53188 KB |
Output is correct |
7 |
Correct |
891 ms |
53720 KB |
Output is correct |
8 |
Correct |
910 ms |
53796 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
903 ms |
50780 KB |
Output is correct |
2 |
Correct |
1028 ms |
48280 KB |
Output is correct |
3 |
Correct |
1043 ms |
46764 KB |
Output is correct |
4 |
Correct |
1008 ms |
45752 KB |
Output is correct |
5 |
Correct |
858 ms |
45212 KB |
Output is correct |
6 |
Correct |
850 ms |
45040 KB |
Output is correct |
7 |
Correct |
734 ms |
52704 KB |
Output is correct |
8 |
Correct |
5 ms |
5196 KB |
Output is correct |
9 |
Correct |
13 ms |
5800 KB |
Output is correct |
10 |
Correct |
713 ms |
51232 KB |
Output is correct |
11 |
Correct |
800 ms |
56888 KB |
Output is correct |
12 |
Correct |
851 ms |
50728 KB |
Output is correct |
13 |
Correct |
871 ms |
55368 KB |
Output is correct |
14 |
Correct |
4 ms |
5196 KB |
Output is correct |
15 |
Correct |
17 ms |
5812 KB |
Output is correct |
16 |
Correct |
780 ms |
47664 KB |
Output is correct |
17 |
Correct |
991 ms |
57308 KB |
Output is correct |
18 |
Correct |
958 ms |
47856 KB |
Output is correct |
19 |
Correct |
973 ms |
47832 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
6 ms |
5196 KB |
Output is correct |
2 |
Correct |
5 ms |
5196 KB |
Output is correct |
3 |
Correct |
4 ms |
5196 KB |
Output is correct |
4 |
Correct |
4 ms |
5196 KB |
Output is correct |
5 |
Correct |
4 ms |
5196 KB |
Output is correct |
6 |
Correct |
3 ms |
5324 KB |
Output is correct |
7 |
Correct |
4 ms |
5324 KB |
Output is correct |
8 |
Correct |
3 ms |
5324 KB |
Output is correct |
9 |
Correct |
4 ms |
5196 KB |
Output is correct |
10 |
Correct |
3 ms |
5068 KB |
Output is correct |
11 |
Correct |
4 ms |
5196 KB |
Output is correct |
12 |
Correct |
5 ms |
5248 KB |
Output is correct |
13 |
Correct |
19 ms |
5836 KB |
Output is correct |
14 |
Correct |
21 ms |
5820 KB |
Output is correct |
15 |
Correct |
12 ms |
5776 KB |
Output is correct |
16 |
Correct |
12 ms |
5884 KB |
Output is correct |
17 |
Correct |
16 ms |
5836 KB |
Output is correct |
18 |
Correct |
12 ms |
5836 KB |
Output is correct |
19 |
Correct |
13 ms |
5836 KB |
Output is correct |
20 |
Correct |
12 ms |
5856 KB |
Output is correct |
21 |
Correct |
9 ms |
5852 KB |
Output is correct |
22 |
Correct |
15 ms |
5876 KB |
Output is correct |
23 |
Correct |
19 ms |
5836 KB |
Output is correct |
24 |
Correct |
16 ms |
5836 KB |
Output is correct |
25 |
Correct |
875 ms |
47364 KB |
Output is correct |
26 |
Correct |
785 ms |
47348 KB |
Output is correct |
27 |
Correct |
811 ms |
47844 KB |
Output is correct |
28 |
Correct |
674 ms |
47180 KB |
Output is correct |
29 |
Correct |
531 ms |
50756 KB |
Output is correct |
30 |
Correct |
726 ms |
51016 KB |
Output is correct |
31 |
Correct |
560 ms |
55816 KB |
Output is correct |
32 |
Correct |
519 ms |
48740 KB |
Output is correct |
33 |
Correct |
467 ms |
49524 KB |
Output is correct |
34 |
Correct |
678 ms |
48836 KB |
Output is correct |
35 |
Correct |
719 ms |
53488 KB |
Output is correct |
36 |
Correct |
852 ms |
49948 KB |
Output is correct |
37 |
Correct |
805 ms |
53248 KB |
Output is correct |
38 |
Correct |
984 ms |
50528 KB |
Output is correct |
39 |
Correct |
623 ms |
55808 KB |
Output is correct |
40 |
Correct |
642 ms |
53312 KB |
Output is correct |
41 |
Correct |
626 ms |
53188 KB |
Output is correct |
42 |
Correct |
891 ms |
53720 KB |
Output is correct |
43 |
Correct |
910 ms |
53796 KB |
Output is correct |
44 |
Correct |
903 ms |
50780 KB |
Output is correct |
45 |
Correct |
1028 ms |
48280 KB |
Output is correct |
46 |
Correct |
1043 ms |
46764 KB |
Output is correct |
47 |
Correct |
1008 ms |
45752 KB |
Output is correct |
48 |
Correct |
858 ms |
45212 KB |
Output is correct |
49 |
Correct |
850 ms |
45040 KB |
Output is correct |
50 |
Correct |
734 ms |
52704 KB |
Output is correct |
51 |
Correct |
5 ms |
5196 KB |
Output is correct |
52 |
Correct |
13 ms |
5800 KB |
Output is correct |
53 |
Correct |
713 ms |
51232 KB |
Output is correct |
54 |
Correct |
800 ms |
56888 KB |
Output is correct |
55 |
Correct |
851 ms |
50728 KB |
Output is correct |
56 |
Correct |
871 ms |
55368 KB |
Output is correct |
57 |
Correct |
4 ms |
5196 KB |
Output is correct |
58 |
Correct |
17 ms |
5812 KB |
Output is correct |
59 |
Correct |
780 ms |
47664 KB |
Output is correct |
60 |
Correct |
991 ms |
57308 KB |
Output is correct |
61 |
Correct |
958 ms |
47856 KB |
Output is correct |
62 |
Correct |
973 ms |
47832 KB |
Output is correct |
63 |
Correct |
989 ms |
47356 KB |
Output is correct |
64 |
Correct |
1026 ms |
47956 KB |
Output is correct |
65 |
Correct |
927 ms |
47556 KB |
Output is correct |
66 |
Correct |
607 ms |
53196 KB |
Output is correct |
67 |
Correct |
1020 ms |
51528 KB |
Output is correct |
68 |
Correct |
854 ms |
49072 KB |
Output is correct |
69 |
Correct |
645 ms |
52256 KB |
Output is correct |
70 |
Correct |
890 ms |
49060 KB |
Output is correct |
71 |
Correct |
1082 ms |
49016 KB |
Output is correct |