Submission #1279689

#TimeUsernameProblemLanguageResultExecution timeMemory
1279689LudisseyEvent Hopping (BOI22_events)C++20
10 / 100
72 ms14372 KiB
#include <bits/stdc++.h> #define sz(a) (int)a.size() #define all(a) a.begin(), a.end() #define rall(a) a.rbegin(), a.rend() #define int long long using namespace std; const int LOG=24; signed main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); int n,q; cin >> n >> q; vector<pair<int,int>> a(n); vector<int> e(n); for (int i = 0; i < n; i++) cin >> a[i].first >> a[i].second, e[i]=i;; sort(all(e),[&](int _a, int b){ if(a[_a].second==a[b].second) return a[_a].first<a[b].first; return a[_a].second<a[b].second; }); vector<pair<int,int>> qrs(q); vector<int> ans(q,-1); vector<vector<pair<int,int>>> tans(n); for (int i = 0; i < q; i++) cin >> qrs[i].first >> qrs[i].second, tans[qrs[i].second-1].push_back({qrs[i].first-1, i}); vector<int> indx; vector<int> l; vector<int> dis; for (int i = 0; i < n; i++) { while((sz(indx)>=1&&a[indx.back()].first>=a[e[i]].first)||(sz(indx)>=2&&a[indx[sz(indx)-2]].second>=a[e[i]].first)){ indx.pop_back(); l.pop_back(); dis.pop_back(); } if(sz(dis)) dis.push_back(dis.back()+(a[indx.back()].second<a[e[i]].first)); else dis.push_back(0); l.push_back(a[e[i]].first); indx.push_back(e[i]); for (auto u : tans[e[i]]) { int s=u.first; if(a[s].second>a[e[i]].second) continue; int up=upper_bound(all(l),a[s].second)-l.begin(); if(up==0) continue; up--; if(dis[up]!=dis.back()) continue; ans[u.second]=1+((sz(dis)-1)-up); if(s==e[i]) ans[u.second]=0; } if(sz(indx)>=2&&a[indx[sz(indx)-2]].second==a[indx[sz(indx)-1]].second){ indx.pop_back(); l.pop_back(); dis.pop_back(); } } for (int i = 0; i < sz(ans); i++) { if(ans[i]==-1) cout << "impossible\n"; else cout << ans[i] << "\n"; } return 0; }
#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...