Submission #1318740

#TimeUsernameProblemLanguageResultExecution timeMemory
1318740AgageldiRice Hub (IOI11_ricehub)C++20
100 / 100
9 ms2476 KiB
#include "bits/stdc++.h"
#include "ricehub.h"
// #include "grader.cpp"
using namespace std;

long long p[500005];
vector <long long> v = {0};

int besthub(int R, int L, int X[], long long B) {
  for(int i = 0; i < R; i++) {
    v.push_back(X[i]);
  }
  int l = 1, r = R, ans = 0;
  for(int i = 1; i <= R; i++) {
    p[i] = p[i - 1] + v[i];
  }
  while(l <= r) {
    long long mid = (l + r) / 2, ok = 0;
    for(int i = 1; i <= R; i++) {
      if(i >= mid) {
        long long l = i - mid + 1;
        long long r = i;
        long long med = (l + r) / 2;
        // i - mid + 1 ... med
        // med + 1 ... i
        long long sm = (p[r] - p[med]) - (v[med] * (r - med));
        long long sm1 = (v[med] * (med - l + 1)) - (p[med] - p[l - 1]);
        if(sm1 + sm <= B) {
          ok = 1;
          break;
        }
      }
    }
    if(ok) {
      l = mid + 1;
      ans = mid;
    }
    else r = mid - 1;
  }
  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...