이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, m, q;
cin >> n >> m >> q;
vector<int> v(m), v2;
for(int &x : v) cin >> x;
sort(v.begin(), v.end());
auto D = [&](int x, int y) { return min(max(x, y) - min(x, y), 2 * n - max(x, y) + min(x, y)); };
while(q--) {
int x, y;
cin >> x >> y;
int ans = D(x, y);
ans = min(ans, D(x, v[0]) + D(v[0]+n, y) + 1);
ans = min(ans, D(x, v.back()+n) + D(v.back(), y) + 1);
int p = lower_bound(v.begin(), v.end(), x) - v.begin();
if(p != m) ans = min(ans, D(x, v[p]) + D(v[p]+n, y) + 1);
if(p > 0) ans = min(ans, D(x, v[p-1]) + D(v[p-1]+n, y) + 1);
p = lower_bound(v.begin(), v.end(), x-n) - v.begin();
if(p != m) ans = min(ans, D(x, v[p]+n) + D(v[p], y) + 1);
if(p > 0) ans = min(ans, D(x, v[p-1]+n) + D(v[p-1], y) + 1);
cout << ans << '\n';
}
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |