Submission #1147520

#TimeUsernameProblemLanguageResultExecution timeMemory
1147520orzdraiduwuCircle Passing (EGOI24_circlepassing)C++20
14 / 100
109 ms5972 KiB
#include <bits/stdc++.h> #define int long long using namespace std; int n, m, q; int dis(int x, int y) { return min(abs(x-y), 2*n - abs(x-y)); } signed main() { cin >> n >> m >> q; vector<int> k(m); for(int i = 0 ; i < m ; i++) { cin >> k[i]; k.push_back(k[i] + n); } sort(k.begin(), k.end()); for(int i = 0 ; i < q ; i++) { int x, y; cin >> x >> y; // int a = min(abs(x-y), abs(min(x, y)) + abs(y-2*n)); int a = dis(x, y); int l = 0, r = k.size(); while(r - l > 1) { int md = (l+r)/2; if(k[md] >= x) r = md; else l = md; } // else { // l = // } int w = k[l]; int b = dis(x, w); w += n; w %= 2*n; b += dis(w, y); int e = k[r]; int c = dis(x, e); e += n; e %= 2*n; c += dis(e, y); b++; c++; // cout << endl; // cout << a << " " << b << " " << c << endl; cout << min({a, b, c}) << 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...