#include <bits/stdc++.h>
#define ar array
#define all(x) x.begin(), x.end()
using namespace std;
typedef long long ll;
int main() {
    ios::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);
    int n;
    cin >> n;
    vector <int> x(n + 2);
    x[n + 1] = 2e9 + 4; x[0] = -x[n + 1];
    for (int i = 1; i <= n; i++)
        cin >> x[i];
    vector <ll> ans(n + 2, 1e18);
    for (int i = 1; i <= n; i++) {
        ll res = 0;
        int tl = i, tr = i, cur = i;
        while (tl > 1 || tr < n) {
            int cnt = 0;
            int l = 0, r = tl;
            while (l + 1 < r) {
                int m = l + r >> 1;
                if (x[cur] - x[m] <= x[tr + 1] - x[tr])
                    r = m;
                else
                    l = m;
            }
            if (r < tl) {
                cnt++;
                res += x[cur] - x[r];
                tl = cur = r;
            }
            l = tr, r = n + 1;
            while (l + 1 < r) {
                int m = l + r >> 1;
                if (x[m] - x[cur] < x[tl] - x[tl - 1])
                    l = m;
                else
                    r = m;
            }
            if (l > tr) {
                cnt++;
                res += x[l] - x[cur];
                tr = cur = l;
            }
            if (!cnt)
                return 0;
        }
        ans[i] = res;
    }
    int q;
    cin >> q;
    while (q--) {
        int s;
        cin >> s;
        int i = lower_bound(all(x), s) - x.begin();
        cout << min(ans[i - 1] + s - x[i - 1], ans[i] + x[i] - s) << '\n';
    }
}
| # | 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... |