Submission #599069

#TimeUsernameProblemLanguageResultExecution timeMemory
599069SlavicGEvent Hopping (BOI22_events)C++17
10 / 100
1596 ms107588 KiB
#include "bits/stdc++.h" using namespace std; const int N = 5000; int dist[N][N]; int l[N], r[N]; void go(set<pair<int, int>> s, int start) { queue<int> q; q.push(start); dist[start][start] = 0; s.erase({r[start], start}); while(!q.empty()) { int u = q.front(); q.pop(); while(!s.empty()) { auto it = s.upper_bound({l[u], -1}); if(it == s.end()) break; if(it->first > r[u]) break; dist[start][it->second] = dist[start][u] + 1; q.push(it->second); s.erase(it); } } } int main() { int n, q; cin >> n >> q; for(int i = 0; i < n; ++i) cin >> l[i] >> r[i]; set<pair<int, int>> s; for(int i = 0; i < n; ++i) s.insert({r[i], i}); for(int i = 0; i < N; ++i) for(int j = 0; j < N; ++j) dist[i][j] = -1; for(int i = 0; i < n; ++i) go(s, i); while(q--) { int a, b; cin >> a >> b; --a, --b; if(dist[b][a] == -1) cout << "impossible\n"; else cout << dist[b][a] << "\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...