Submission #1151495

#TimeUsernameProblemLanguageResultExecution timeMemory
1151495RafiullahCircle Passing (EGOI24_circlepassing)C++20
100 / 100
55 ms8628 KiB
#include<bits/stdc++.h> // #include <ext/pb_ds/tree_policy.hpp> // #include <ext/pb_ds/assoc_container.hpp> using namespace std; #define int long long const int N = 5e5 + 5; const int mod = 1e9 + 7; const int mod1 = 998244353; const int LG = 20; // #define s(i) (*s.find_by_order(i)) // Warning : Read this line. int power(int b,int e){ if(e<=0)return 1; int o = power(b,e>>1); o *= o, o %= mod1; if(e % 2)o *= b, o %= mod1; return o; } int n,m; vector<int> F; int dist(int a,int b){ return min((a - b + 2 * n) % (2 * n), (b - a + 2 * n) % (2 * n)); } int op(int a){ if(a >= n)return a - n; else return a + n; } int fin(int a,int b){ int sz = F.size(); int y = lower_bound(F.begin(),F.end(),a) - F.begin(); y = (y - 1 + sz) % (sz); int ans1 = dist(a,F[y]) + 1 + dist(op(F[y]),b); int ans2 = dist(a,F[(y+1)%sz]) + 1 + dist(op(F[(y+1)%sz]), b); return min(ans1,ans2); } void solve(){ int q;cin >> n >> m >> q; for(int i = 0 ; i < m ; i ++){ int o;cin >> o; F.push_back(o); } for(int i = m ; i < 2 * m ; i ++) F.push_back(F[i - m] + n); sort(F.begin(),F.end()); for(int er = 0 ; er < q ; er ++){ int x,y;cin >> x >> y; int ans = min({dist(x,y), fin(x,y),fin(y,x)}); cout << ans << '\n'; } } signed main(){ ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL); int t = 1; // cin >> t; while(t --){ solve(); } }
#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...