Submission #1151493

#TimeUsernameProblemLanguageResultExecution timeMemory
1151493AbdullahIshfaqCircle Passing (EGOI24_circlepassing)C++20
100 / 100
69 ms8276 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define MOD 998244353
void solve(){
	ll n , m , q, x, y;
	cin >> n >> m >> q;
	vector<ll> k(2 * m);
	for(int i = 0; i < m ; i++){
		cin >> k[i];
		k[i + m] = k[i] + n;
	}
	sort(k.begin(), k.end());
	for(int i = 0; i < q; i++){
		cin >> x >> y;
		ll ans = min(abs(y - x),2 * n - abs(y - x));
		ll n1 = lower_bound(k.begin(), k.end(), x) - k.begin();
		if(n1 == 2 * m){
			n1 = 0;
		}
		ll xx  = k[n1] + n;
		if(xx >= 2 * n){
			xx = k[n1] - n;
		}
		ans = min(ans, min(abs(y - xx) + min(abs(k[n1] - x), 2 * n - abs(k[n1] - x)) + 1,2 * n - abs(y - xx) + min(abs(k[n1] - x), 2 * n - abs(k[n1] - x)) + 1));
		n1--;
		if(n1 == -1){
			n1 = 2 * m - 1;
		}
		xx  = k[n1] + n;
		if(xx >= 2 * n){
			xx = k[n1] - n;
		}
		ans = min(ans, min(abs(y - xx) + min(abs(k[n1] - x), 2 * n - abs(k[n1] - x)) + 1,2 * n - abs(y - xx) + min(abs(k[n1] - x), 2 * n - abs(k[n1] - x)) + 1));
		cout << ans << '\n';
	}
}
int main() {
	ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	int tests = 1;
	// cin >> tests;
	for(int i = 1; i <= tests; i ++)
		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...