제출 #890773

#제출 시각아이디문제언어결과실행 시간메모리
890773vjudge1Bitaro's travel (JOI23_travel)C++17
15 / 100
3072 ms5984 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define all(x) x.begin(), x.end()
#define size(x) (int)x.size()

template<class S, class T>
bool chmin(S &a, const T &b) {
    return a > b && (a = b) == b;
}
template<class S, class T>
bool chmax(S &a, const T &b) {
    return a < b && (a = b) == b;
}
const int inf = 1e9 + 7;
const int INF = 1e18 + 7;
const int mod = 998244353;

signed main() {
    cin.tie(nullptr)->sync_with_stdio(false);
    int n;
    cin >> n;
    vector<int> x(n);
    for (int i = 0; i < n; ++i) {
        cin >> x[i];
    }
    int q;
    cin >> q;
    while (q--) {
        int s, res = 0;
        cin >> s;
        auto it = lower_bound(all(x), s);
        deque<int> l, r;
        while (it != x.begin()) {
            l.push_front(*--it);
        }
        it = lower_bound(all(x), s);
        while (it != x.end()) {
            r.push_back(*it++);
        }
        while (!l.empty() || !r.empty()) {
            if (!l.empty() && !r.empty()) {
                if (s - l.back() <= r.front() - s) {
                    res += s - l.back();
                    s = l.back();
                    l.pop_back();
                } else {
                    res += r.front() - s;
                    s = r.front();
                    r.pop_front();
                }
            } else if (!r.empty()) {
                res += r.front() - s;
                s = r.front();
                r.pop_front();
            } else {
                res += s - l.back();
                s = l.back();
                l.pop_back();
            }
        }
        cout << res << '\n';
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...