#include <bits/stdc++.h>
using namespace std;
const int INF = 1e9;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int N, Q;
cin >> N >> Q;
vector<int> S(N+1), E(N+1);
for (int i = 1; i <= N; i++) cin >> S[i] >> E[i];
int ord[N+1];
iota(ord+1, ord+N+1, 1);
sort(ord+1, ord+N+1, [&E, &S](int a, int b) {return (E[a] < E[b]) || (E[a] == E[b] && S[a] > S[b]);});
int iord[N+1];
for (int i = 1; i <= N; i++) iord[ord[i]] = i;
int qc[N+1];
qc[1] = 0;
for (int i = 2; i <= N; i++) {
qc[i] = qc[i-1] + (S[ord[i]] <= E[ord[i-1]] && E[ord[i-1]] <= E[ord[i]]);
}
while (Q--) {
int s, e;
cin >> s >> e;
int is = iord[s], ie = iord[e];
if (s == e) cout << 0 << "\n";
else if (S[e] <= E[s] && E[s] <= E[e]) cout << 1 << "\n";
else if (is > ie) cout << "impossible\n";
else if (qc[ie] - qc[is] < ie-is) cout << "impossible\n";
else cout << ie-is << "\n";
}
return 0;
}
/*
5 2
1 3
2 4
4 7
7 9
3 7
1 4
3 2
*/
/*
8 5
1 2
3 4
1 5
6 7
5 10
10 20
15 20
999999999 1000000000
1 6
1 7
2 4
3 3
5 8
*/
/*
3 9
1 2
2 3
3 4
1 1
1 2
1 3
2 1
2 2
2 3
3 1
3 2
3 3
*/
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |