Submission #1147492

#TimeUsernameProblemLanguageResultExecution timeMemory
1147492samiaCircle Passing (EGOI24_circlepassing)C++20
0 / 100
2109 ms435028 KiB
#include <bits/stdc++.h> #include <iostream> using namespace std; using ll = int; int main() { ll n,m,q; cin>>n>>m>>q; ll bestie=0; ll b; map<ll,ll>p; map<ll,ll>s; for(ll so=0;so<=2*n;so++){p[so]=-1;s[so]=0;} for(ll so=0;so<m;so++){ cin>>bestie; b=(bestie+n)%(2*n); p[bestie]=b; p[b]=bestie; s[bestie]=1; s[b]=1; } ll r=0; //13 for(ll so=bestie;so<bestie+(2*n);so++){ r=so%(2*n); if(p[r]==-1){ if(r==0){ s[r]=s[2*n-1]+1; p[r]=p[2*n-1];} else { s[r]=s[r-1]+1; p[r]=p[r-1];} } } r=0; for(ll so=bestie;so>bestie-(2*n);so--){ r=so; if(so<0){r=2*n+r;} if(s[r]!=1){ if(r==(2*n)-1){ if(s[r]>s[0]+1){s[r]=s[0]+1; p[r]=p[0];} } else { if(s[r]>s[r+1]+1){ s[r]=s[r+1]+1; p[r]=p[r+1];} //if(r==3){cout<<s[4]<<"guyiuhoj"<<endl;} } } } ll x,y; ll ans=0; while(q--){ cin>>x>>y; ans=min((2*n)-abs(y-x),abs(y-x)); ans=min(ans, min((2*n)-abs(y-p[x]),abs(y-p[x]))+s[x]); ans=min(ans, min((2*n)-abs(p[y]-x),abs(x-p[y]))+s[y]); cout<<ans<<endl; } }
#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...