#include <iostream>
#include <vector>
#include <algorithm>
#include <set>
using namespace std;
struct event {
int st, en, id;
};
const int maxn = 100010;
int nxt[maxn][20];
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int n, q;
cin >> n >> q;
vector<event> e(n+1);
for (int i = 1; i <= n; i++) {
cin >> e[i].st >> e[i].en;
e[i].id = i;
}
e.push_back({ (int)1e9+1, (int)1e9 + 1 });
for (int i = 0; i < 20; i++) {
nxt[n + 1][i] = n + 1;
}
vector<int> pos(n + 1);
sort(e.begin()+1, e.end(), [](event& a, event& b) {return a.en < b.en; });
int mn = n + 1;
for (int i = n; i > 0; i--) {
pos[e[i].id] = i;
/*int l = i, r = n + 2;
while (l + 1 < r) {
int m = (l + r) / 2;
if (e[m].st <= e[i].en)l = m;
else r = m;
}*/
nxt[i][0] = (e[mn].st <= e[i].en ? mn : i);
for (int j = 1; j < 20; j++) {
nxt[i][j] = nxt[nxt[i][j - 1]][j - 1];
}
if (e[i].st < e[mn].st)mn = i;
}
for (int i = 0; i < q; i++) {
int s, e;
cin >> s >> e;
s = pos[s];
e = pos[e];
if (e == s) {
cout << "0\n";
continue;
}
if (e < s) {
cout << "impossible\n";
continue;
}
int ans = 0;
for (int i = 19; i >= 0; i--) {
if (nxt[s][i] < e) {
ans += (1 << i);
s = nxt[s][i];
}
}
if (nxt[s][0] != e) {
cout << "impossible\n";
continue;
}
cout << ans + 1 << '\n';
}
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
212 KB |
Output is correct |
2 |
Correct |
66 ms |
10228 KB |
Output is correct |
3 |
Correct |
73 ms |
10224 KB |
Output is correct |
4 |
Correct |
69 ms |
10196 KB |
Output is correct |
5 |
Correct |
68 ms |
10376 KB |
Output is correct |
6 |
Correct |
77 ms |
10360 KB |
Output is correct |
7 |
Incorrect |
113 ms |
10424 KB |
Output isn't correct |
8 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
0 ms |
212 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
0 ms |
212 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
0 ms |
212 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
72 ms |
10312 KB |
Output is correct |
2 |
Correct |
65 ms |
10320 KB |
Output is correct |
3 |
Correct |
100 ms |
10280 KB |
Output is correct |
4 |
Correct |
67 ms |
10772 KB |
Output is correct |
5 |
Correct |
83 ms |
10572 KB |
Output is correct |
6 |
Incorrect |
100 ms |
10476 KB |
Output isn't correct |
7 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
212 KB |
Output is correct |
2 |
Correct |
66 ms |
10228 KB |
Output is correct |
3 |
Correct |
73 ms |
10224 KB |
Output is correct |
4 |
Correct |
69 ms |
10196 KB |
Output is correct |
5 |
Correct |
68 ms |
10376 KB |
Output is correct |
6 |
Correct |
77 ms |
10360 KB |
Output is correct |
7 |
Incorrect |
113 ms |
10424 KB |
Output isn't correct |
8 |
Halted |
0 ms |
0 KB |
- |