Submission #721580

#TimeUsernameProblemLanguageResultExecution timeMemory
721580The_SamuraiEvent Hopping (BOI22_events)C++17
10 / 100
1584 ms524288 KiB
#pragma GCC optimize("Ofast") #pragma GCC target("avx,avx2") #include "bits/stdc++.h" using namespace std; using ll = long long; int INF = 2e9; struct node { int l, r, i; }; bool comp(node a, node b) { if (a.r < b.r) return true; if (a.r > b.r) return false; return a.l < b.l; } void solve() { int n, q; cin >> n >> q; vector<node> a(n); for (int i = 0; i < n; i++) { cin >> a[i].l >> a[i].r; a[i].i = i + 1; } sort(a.begin(), a.end(), comp); vector<int> ind(n + 1); for (int i = 0; i < n; i++) { ind[a[i].i] = i; } vector<vector<int>> can(n + 1, vector<int>(n + 1, -1)); vector<vector<int>> g(n + 1); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (a[j].l <= a[i].r and a[i].r <= a[j].r) { g[i].emplace_back(j); } } } for (int i = 0; i < n; i++) { can[i][i] = 0; queue<int> pq; pq.push(i); while (!pq.empty()) { int u = pq.front(); pq.pop(); for (int v : g[u]) { if (can[i][v] == -1) { can[i][v] = can[i][u] + 1; pq.push(v); } } } } while (q--) { int si, ei; cin >> si >> ei; si = ind[si]; ei = ind[ei]; if (can[si][ei] == -1) cout << "impossible"; else cout << can[si][ei]; cout << '\n'; } } int main() { ios_base::sync_with_stdio(false); cout.tie(nullptr); cin.tie(nullptr); int queries = 1; #ifdef test_cases freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout); // cin >> queries; #else // cin >> queries; #endif for (int test_case = 1; test_case <= queries; test_case++) { solve(); // cout << '\n'; } }
#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...