제출 #1362747

#제출 시각아이디문제언어결과실행 시간메모리
1362747i_ob.dev쌀 창고 (IOI11_ricehub)C++20
100 / 100
5 ms1348 KiB
#include <bits/stdc++.h>
using namespace std;

int besthub(int R, int L, int X[], long long B)
{
    vector<long long> pref(R+1,0);
    for(int i=0;i<R;i++)
        pref[i+1] = pref[i] + X[i];
    auto can = [&](int K)->bool
    {
        for(int l=0; l+K-1<R; l++)
        {
            int r = l + K - 1;
            int m = (l + r) / 2;
            long long median = X[m];

            long long leftCost  = median*(m-l) - (pref[m] - pref[l]);
            long long rightCost = (pref[r+1] - pref[m+1]) - median*(r-m);

            if(leftCost + rightCost <= B)
                return true;
        }
        return false;
    };
    int low = 1, high = R, ans = 1;
    while(low <= high)
    {
        int mid = (low + high) / 2;
        if(can(mid)) ans = mid, low = mid + 1;
        else high = mid - 1;
    }
    return ans;
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…