This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "bits/stdc++.h"
using namespace std;
typedef long long ll;
typedef long double fl;
typedef vector <int> vi;
typedef pair <ll,ll> pll;
typedef pair <int,int> pii;
typedef pair <int,pii> piii;
#define forr(_a,_b,_c) for(int _a = (_b); _a <= int (_c); ++_a)
#define fofr(_a,_b,_c) for(int _a = (_b) + 1; _a --> int (_c);)
#define forf(_a,_b,_c) for(int _a = (_b); _a < int (_c); ++_a)
#define st first
#define nd second
#define pb push_back
#define mp make_pair
#define all(x) begin(x),end(x)
#define mask(i) (1LL << (i))
#define bit(x, i) (((x) >> (i)) & 1)
#define bp __builtin_popcountll
#define file "test"
template<class X, class Y>
	bool minz(X &x, const Y &y) {
		if (x > y) {
			x = y;
			return true;
		} return false;
	}
template<class X, class Y>
	bool maxz(X &x, const Y &y) {
		if (x < y) {
			x = y;
			return true;
		} return false;
	}
const int N = 5e5 + 5;
const ll oo = (ll) 1e16;
const ll mod = 1e9 + 7; // 998244353;
ll n, u, q, s;
vector <ll> x;
int main(){
	ios_base::sync_with_stdio(0); cin.tie(0);
	#ifdef kaguya
		freopen(file".inp", "r", stdin); freopen(file".out", "w", stdout);
	#endif
	cin >> n;
	forr (i, 1, n){
		cin >> u;
		x.pb(u);
	}
	cin >> q;
	while(q--) {
		cin >> s;
		
		ll i = lower_bound(all(x), s) - x.begin(), ans=0;
		
		if(!i){
			cout << x.back() - s << "\n";
			continue;
		}
		if (i == n){
			cout << s - x[0] << "\n";
			continue;
		}
		ll fr = x[i] - s, fl = s - x[i - 1], l, r;
		
		if (fl <= fr){
			ans += fl;
			l = r = i - 1;
			s = x[i - 1];
		} else {
			ans += fr;
			l = r = i;
			s = x[i];
		}
		while (1){
			if (!l){
				ans += x[n - 1] - s;
				break;
			}
			if (r == n - 1){
				ans += s - x[0];
				break;
			}
			if (s - x[l - 1] <= x[r + 1] - s){
				ll i = lower_bound(all(x), 2 * s - x[r + 1]) - x.begin();
				ans += s - x[i];
				s = x[i];
				l = i;
			} else {
				ll i = lower_bound(all(x), 2 * s - x[l - 1]) - x.begin() - 1;
				ans += x[i] - s;
				s = x[i];
				r = i;
			}
		}
		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... |