Submission #971978

#TimeUsernameProblemLanguageResultExecution timeMemory
971978idasEvent Hopping (BOI22_events)C++11
0 / 100
47 ms7368 KiB
#include <bits/stdc++.h> #define FAST_IO ios_base::sync_with_stdio(false); cin.tie(nullptr) #define FOR(i, begin, end) for(int i=(begin); i<(end); i++) #define sz(x) int((x).size()) #define pb push_back #define s second #define f first using namespace std; typedef vector<int> vi; typedef pair<int, int> pii; typedef tuple<int, int, int> tiii; const int INF=1e9; const int N=1e5+10; int n, q, s[N], e[N], gr[N], d[N]; set<pii> same; int main() { FAST_IO; cin >> n >> q; vector<tiii> inf; FOR(i, 0, n) { cin >> s[i] >> e[i]; inf.pb({s[i],e[i],i}); } sort(inf.begin(), inf.end()); int j=-1; for(auto it : inf){ int a, b, i; tie(a, b, i)=it; if(j==-1){ j=i; gr[i]=i; d[i]=0; continue; } if(s[i]<=e[j] && e[j]<=e[i]){ if(e[j]==e[i]){ same.insert({i,j}); same.insert({j,i}); } gr[i]=gr[j]; d[i]=d[j]+1; } else{ gr[i]=i; d[i]=0; } j=i; } while(q--){ int a, b; cin >> a >> b; --a; --b; if(same.count({a,b})){ cout << 1 << '\n'; continue; } if(gr[a]!=gr[b] || d[b]<d[a]){ cout << "impossible\n"; continue; } cout << d[b]-d[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...