제출 #343311

#제출 시각아이디문제언어결과실행 시간메모리
343311Aldas25쌀 창고 (IOI11_ricehub)C++14
68 / 100
1088 ms2156 KiB
#include "ricehub.h"
#include <bits/stdc++.h>

using namespace std;

#define FOR(i, a, b) for (int i = (a); i <= (b); i++)
#define REP(n) FOR(O, 1, (n))
#define f first
#define s second
#define pb push_back
typedef long long ll;

const int MAXN = 100100;

int r, l;
int x[MAXN];
ll b;

bool check (int fr, int to) {
    ll cnt = 0;
    int i = (fr+to)/2;
    FOR(j, fr, to)
        cnt += abs(x[j] - x[i]);
    if (cnt <= b) return true;
    else return false;
}

int calc (int i) {
    int le = i, ri = r-1;
    while (le < ri) {
        int mid = (le + ri + 1)/2;
        if (check (i, mid)) le = mid;
        else ri = mid-1;
    }

    return (le-i+1);
}

int besthub(int R, int L, int X[], long long B)
{
    r = R;
    l = L;
    FOR(i, 0, r-1) x[i] = X[i];
    b = B;

    int ans = 1;
    FOR(i, 0, r-1) ans = max(ans, calc(i));
    return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...