Submission #1235992

#TimeUsernameProblemLanguageResultExecution timeMemory
1235992p4r4d0_xCircle Passing (EGOI24_circlepassing)C++20
100 / 100
55 ms12284 KiB
#include<bits/stdc++.h> using namespace std; #define ll long long #define pb push_back void solve(){ ll n, m, q; cin >> n >> m >> q; vector<ll> a(m), b(m); for(int i = 0; i < m; ++i){ cin >> a[i]; a.pb(n + a[i]); } sort(begin(a), end(a)); while(q--){ ll ans = 1e18; ll x, num2, y; cin >> x >> y; ll num1 = min(abs(x - y), 2 * n - abs(x - y)); auto it = lower_bound(begin(a), end(a), x) - a.begin(); ans = min(ans, num1); if(it < a.size() && it >= 0){ it = a[it]; num2 = min(2 * n - abs(x - it), abs(x - it)); if(it < n)it += n; else it -= n; num2 += 1 + min(2 * n - abs(it - y), abs(it - y)); ans = min(ans, num2); } it = lower_bound(begin(a), end(a), x) - a.begin() - 1; if(it >= 0 && it < a.size()){ it = a[it]; num1 = min(2 * n - abs(x - it), abs(x - it)); if(it < n)it += n; else it -= n; num1 += 1 + min(2 * n - abs(it - y), abs(it - y)); ans = min(ans, num1); } ll it1 = a[0]; ll it2 = a.back(); num1 = min(2 * n - abs(x - it1), abs(x - it1)) + 1; num2 = min(2 * n - abs(x - it2), abs(x - it2)) + 1; if(it1 < n)it1 += n; else it1 -= n; if(it2 < n)it2 += n; else it2 -= n; num1 += min(2 * n - abs(it1 - y), abs(it1 - y)); num2 += min(2 * n - abs(it2 - y), abs(it2 - y)); ans = min({ans, num1, num2}); cout << ans << "\n"; } } int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL), cout.tie(NULL); ll 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...