제출 #794624

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

#include <bits/stdc++.h>

using namespace std;

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);
    
    long long n, q, s, l, r, m, ll, rr, ans, cr;
    cin >> n;
    for(int i = 0; i < n; ++ i) {
        cin >> a[i];
    }
    for(cin >> q; q --> 0;) {
        cin >> s;
        ll = -1, rr = n; // a[l] <= s < a[r];
        for(; ll + 1 < rr;) {
            m = (ll + rr) / 2;
            (s < a[m] ? rr : ll) = m;
        }
        cr = (ll == -1 || (rr < n && a[rr] - s < s - a[ll]) ? rr : ll);
        ans = abs(a[cr] - s);
        for(; ll > -1 && rr < n;) {
            if(a[rr] - a[cr] < a[cr] - a[ll]) {
                l = rr, r = n;
                for(; l + 1 < r;) {
                    m = (l + r) / 2;
                    (a[m] - a[m - 1] < a[m - 1] - a[ll] ? l : r) = m;
                }
                ans += a[l] - a[cr];
                cr = l;
                rr = l + 1;
            } else {
                l = -1, r = ll;
                for(; l + 1 < r;) {
                    m = (l + r) / 2;
                    (a[rr] - a[m + 1] < a[m + 1] - a[m] ? l : r) = m;
                }
                ans += a[cr] - a[r];
                cr = r;
                ll = r - 1;
            }
        }
        if(ll < 0 && rr < n) {
            ans += a[n - 1] - a[cr];
        } else if(rr >= n && ll > -1) {
            ans += a[cr] - a[0];
        } 
        cout << ans << '\n';
    }
}

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

travel.cpp:15:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   15 | 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...