Submission #1214826

#TimeUsernameProblemLanguageResultExecution timeMemory
1214826biankCircle Passing (EGOI24_circlepassing)C++20
100 / 100
43 ms4424 KiB
#include <bits/stdc++.h> using namespace std; #define forn(i,n) for(int i=0;i<int(n);i++) #define forsn(i,s,n) for(int i=int(s);i<int(n);i++) #define dforn(i,n) for(int i=int(n)-1;i>=0;i--) #define dforsn(i,s,n) for(int i=int(n)-1;i>=int(s);i--) #define fst first #define snd second #define pb push_back #define eb emplace_back #define sz(x) (int)x.size() #define all(x) x.begin(), x.end() typedef long long ll; typedef vector<ll> vll; typedef vector<int> vi; typedef pair<int,int> ii; int main(){ ios::sync_with_stdio(0); cin.tie(0); int n,m,q; cin>>n>>m>>q; vi k(2*m); forn(i,m){ cin>>k[i]; k[i+m]=k[i]+n; } /*vi l(2*n),r(2*n); l[0]=k.back()+n; forsn(i,1,2*n){ if(b[i]) l[i]=i; else l[i]=l[i-1]; } r[2*n-1]=k.front(); dforn(i,2*n-1){ if(b[i]) r[i]=i; else r[i]=r[i+1]; }*/ auto dist=[&](int x, int y){ int d=abs(x-y); return min(d,2*n-d); }; forn(_,q){ int x,y; cin>>x>>y; int ans=dist(x,y); forn(t,2){ int lx,rx; { auto it=upper_bound(all(k),x); if(it!=k.begin()) it--; else it=prev(k.end()); lx=*it; } { auto it=lower_bound(all(k),x); if(it==k.end()) it=k.begin(); rx=*it; } ans=min(ans,dist(x,lx)+1+dist(y,(lx+n)%(2*n))); ans=min(ans,dist(x,rx)+1+dist(y,(rx+n)%(2*n))); swap(x,y); } cout<<ans<<'\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...