제출 #796723

#제출 시각아이디문제언어결과실행 시간메모리
796723vjudge1Bitaro's travel (JOI23_travel)C++17
100 / 100
314 ms7992 KiB
#ifdef Home
#define _GLIBCXX_DEBUG
#endif // Home

#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef long double ld;

const int N = 200200;

long long a[N];

main() {
#ifdef Home
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
#endif // Home
    ios_base::sync_with_stdio(0);
    cin.tie(0);

    int n, q, s, l, r, m, cr_l, cr_r, ans;
    cin >> n;
    for(int i = 0; i < n; ++ i) {
        cin >> a[i];
    }
    for(cin >> q; q --> 0;) {
        cin >> s;
        cr_l = -1, cr_r = n;
        ans = 0;
        for(; cr_l + 1 < cr_r;) {
            m = (cr_l + cr_r) / 2;
            (a[m] > s ? cr_r : cr_l) = m;
        }
        for(; cr_l != -1 && cr_r != n;) {
            if(s - a[cr_l] > a[cr_r] - s) {
                l = cr_r, r = n;
                for(; l + 1 < r;) {
                    m = (l + r) / 2;
                    (a[m] - s < s - a[cr_l] ? l : r) = m;
                }
                ans += a[l] - s;
                s = a[l];
                cr_r = r;
            } else {
                l = -1, r = cr_l;
                for(; l + 1 < r;) {
                    m = (l + r) / 2;
                    (a[cr_r] - s < s - a[l] ? l : r) = m;
                }
                ans += s - a[r];
                s = a[r];
                cr_l = l;
            }
        }
        if(cr_r < n) {
            ans += a[n - 1] - s;
        } else if(cr_l > -1) {
            ans += s - a[0];
        }
        cout << ans << '\n';
    }
}

컴파일 시 표준 에러 (stderr) 메시지

travel.cpp:16:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   16 | main() {
      | ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...