Submission #1363990

#TimeUsernameProblemLanguageResultExecution timeMemory
1363990TraianDanciu쌀 창고 (IOI11_ricehub)C++20
0 / 100
0 ms344 KiB
#include "ricehub.h"

using namespace std;

const int MAXN = 100000;

long long sp[MAXN + 1];

int besthub(int n, int lim, int x[], long long b) {
  for(int i = 0; i < n; i++) {
    sp[i + 1] = sp[i] + x[i];
  }

  int st = 1, dr = n, answer = 0;
  while(st <= dr) {
    int mij = (st + dr) / 2, ok = 0;
    for(int i = 1; i + mij - 1 <= n; i++) {
      int median = i + mij / 2;
      long long sum = 1LL * x[median - 1] * (median - i) - (sp[median - 1] - sp[i - 1]);
      sum += 1LL * x[median - 1] * (i + mij - 1 - median) - (sp[i + mij - 1] - sp[median]);
      if(sum <= b) {
        ok = 1;
      }
    }
    if(ok) {
      answer = mij;
      st = mij + 1;
    } else {
      dr = mij - 1;
    }
  }
  return answer;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...