Submission #527591

#TimeUsernameProblemLanguageResultExecution timeMemory
527591CSQ31Railway Trip 2 (JOI22_ho_t4)C++17
27 / 100
2082 ms17488 KiB
#include <bits/stdc++.h> using namespace std; #define pb push_back #define owo ios_base::sync_with_stdio(0);cin.tie(0); const int MAXN = 1e5+2; int l[17][MAXN],r[17][MAXN]; vector<int>e[MAXN],f[MAXN]; int main() { owo int n,k,m,q; cin>>n>>k>>m; for(int i=0;i<m;i++){ int s,t; cin>>s>>t; if(s < t){ e[s].pb(t); e[min(s+k,t+1)].pb(-t); }else{ f[s].pb(t); f[max(s-k,t-1)].pb(-t); } } multiset<int,greater<int>>ss; for(int i=1;i<=n;i++){ for(int x:e[i]){ if(x>0)ss.insert(x); else ss.erase(ss.find(-x)); } if(ss.empty())r[0][i] = i; else r[0][i] = *ss.begin(); } ss.clear(); for(int i=n;i>=1;i--){ for(int x:f[i]){ if(x>0)ss.insert(-x); else ss.erase(ss.find(x)); } if(ss.empty())l[0][i] = i; else l[0][i] = -(*ss.begin()); } cin>>q; while(q--){ int s,t; cin>>s>>t; int L=s,R=s; int ans = 0; while(t<L || t>R){ int mnl = L; int mxr = R; for(int i=L;i<=R;i++){ mnl = min(mnl,l[0][i]); mxr = max(mxr,r[0][i]); } if(mnl == L && mxr == R){ ans = -1; break; } L = mnl; R = mxr; ans++; } cout<<ans<<'\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...