Submission #589295

#TimeUsernameProblemLanguageResultExecution timeMemory
5892951zaid1Event Hopping (BOI22_events)C++17
10 / 100
1577 ms3048 KiB
#include <bits/stdc++.h> using namespace std; #define endl '\n' const int M = 2e5+2; struct rng {int l, r, i;}; int nxt[M]; signed main() { cin.tie(0)->sync_with_stdio(0); int n, q; cin >> n >> q; vector<rng> v(n); for (auto &[l, r, i]:v) cin >> l >> r; for (int i = 0; i < n; i++) v[i].i = i; for (auto [l, r, i]:v) { int mn = l, ind = -1; for (auto [a, b, j]:v) { if (i == j) continue; if (a < mn && l <= b && b <= r) { ind = j; mn = a; } } nxt[i] = ind; } bitset<100005> vis; while (q--) { int a, b; cin >> a >> b; a--; b--; if (a == b) { cout << 0 << endl; continue; } int ans = 1; auto tmp = v[b]; while (v[a].r < tmp.l) { if (nxt[tmp.i] < 0) break; tmp = v[nxt[tmp.i]]; ans++; } if (tmp.l <= v[a].r && v[a].r <= tmp.r) { cout << ans << endl; } else { cout << "impossible" << endl; } } return 0; } /* 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 5 2 1 3 2 4 4 7 7 9 3 7 1 4 3 2 */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...