제출 #1154321

#제출 시각아이디문제언어결과실행 시간메모리
1154321hiderr쌀 창고 (IOI11_ricehub)C++20
100 / 100
15 ms584 KiB
#include "ricehub.h"
#include <bits/stdc++.h>
using namespace std;

#define loop(i, a, b) for(int i = a; i <= b; i++)
#define loop_rev(i, a, b) for(int i = a; i >= b; i--)
#define all(x) x.begin(), x.end()
#define sz(x) int(x.size())
#define eb emplace_back
#define pb push_back

using ll = long long;
#define int ll

signed besthub(signed n, signed max_x, signed x[], int B) {

  int l = 0, r = (-1), ind = (-1), res = 0;
  int median = 0, sum_r = 0, sum_l = 0, cnt_l = 0, cnt_r = 0;

  auto is_cool = [&]() {
    int cost_l = cnt_l * x[median] - sum_l;
    int cost_r = sum_r - cnt_r * x[median];
    int cost = cost_l + cost_r;
    return (cost <= B);
  };

  auto fix_median = [&]() {
    cnt_l = (r - l + 2) / 2;
    cnt_r = (r - l + 1) - cnt_l;
    median = l + cnt_l - 1;
    while(ind < median) {
      ++ind;
      sum_r -= x[ind];
      sum_l += x[ind];
    }
  };

  auto add = [&]() {
    sum_r += x[++r];
    fix_median();
  };

  auto rem = [&]() {
    sum_l -= x[l++];
    fix_median();
  };

  while(l < n) {
    if(is_cool()) {
      res = max(res, (r - l + 1));
      if(r < n-1) {
        add();
      }
      else {
        break;
      }
    }
    else {
      rem();
    }
  }

  return res;

}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...