Submission #1307118

#TimeUsernameProblemLanguageResultExecution timeMemory
1307118vtnooRailway Trip 2 (JOI22_ho_t4)C++20
27 / 100
2097 ms24968 KiB
#include <bits/stdc++.h> #define pb push_back #define fst first #define snd second #define fore(i,a,b) for(int i=a,pao=b;i<pao;++i) #define SZ(x) ((int)x.size()) #define ALL(x) x.begin(),x.end() #define me(a,v) memset((a),(v),sizeof(a)) #define FIN ios::sync_with_stdio(0);cin.tie(0);cout.tie(0) using namespace std; typedef long long ll; const int MAXM=2e5+5,MAXN=1e5+5,INF=1e9; int A[MAXM],B[MAXM],L[MAXN],R[MAXN],sig[MAXN]; void chmin(int &a,int b){ if(a>b)a=b; } void chmax(int &a,int b){ if(a<b)a=b; } int main(){FIN; int n,k;cin>>n>>k; int m;cin>>m; fill(L,L+n,INF); fill(R,R+n,-INF); vector<vector<int>>add(n),rem(n); vector<vector<int>>add2(n),rem2(n); fore(i,0,m){ cin>>A[i]>>B[i]; A[i]--;B[i]--; if(A[i]<B[i]){ add[A[i]].pb(B[i]); if(min(A[i]+k,B[i]+1)<n)rem[min(A[i]+k,B[i]+1)].pb(B[i]); }else{ add2[A[i]].pb(B[i]); if(max(A[i]-k,B[i]-1)>=0)rem2[max(A[i]-k,B[i]-1)].pb(B[i]); } } multiset<int>s; fore(i,0,n){ if(!s.empty())for(auto x:rem[i])s.erase(s.find(x)); for(auto x:add[i])s.insert(x); if(!s.empty())chmax(R[i],*s.rbegin()); } s.clear(); for(int i=n-1;i>=0;i--){ if(!s.empty())for(auto x:rem2[i])s.erase(s.find(x)); for(auto x:add2[i])s.insert(x); if(!s.empty())chmin(L[i],*s.begin()); } me(sig,-1); int Q;cin>>Q; while(Q--){ int s,t;cin>>s>>t;s--;t--; queue<pair<int,int>>q;q.push({s,s}); int steps=0; while(!q.empty()){ auto prev=q.front();q.pop(); if(prev.fst<=t&&t<=prev.snd){ cout<<steps<<endl; break; } steps++; pair<int,int>next=prev; for(int i=prev.fst;i<=prev.snd;i++){ //~ if(sig[i]!=-1)i=sig[i]; chmin(next.fst,L[i]); chmax(next.snd,R[i]); } //~ sig[prev.fst]=prev.snd+1; if(next==prev){ cout<<-1<<endl; break; } q.push(next); } } }
#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...