Submission #891803

#TimeUsernameProblemLanguageResultExecution timeMemory
891803ind1vRice Hub (IOI11_ricehub)C++11
100 / 100
15 ms3676 KiB
#include <bits/stdc++.h>
#include "ricehub.h"

using namespace std;

const int R = 1e5 + 5;

int xx[R];
long long s[R];

long long sum(int i, int j) {
  if (i > j) {
    return 0;
  }
  return (i == 0 ? s[j] : s[j] - s[i - 1]);
}

long long cost(int i, int j) {
  int mid = (i + j) >> 1;
  long long res = 0;
  res += 1LL * xx[mid] * (mid - i + 1) - sum(i, mid);
  if (mid + 1 <= j) {
    res += sum(mid + 1, j) - 1LL * xx[mid] * (j - mid);
  }
  return res;
}

int besthub(int r, int l, int x[], long long b) {
  for (int i = 0; i < r; i++) {
    s[i] = (i == 0 ? x[i] : x[i] + s[i - 1]);
    xx[i] = x[i];
  }
  int ans = 0;
  for (int i = 0, j = 0; i < r; i++) {
    while (j + 1 <= i && cost(j, i) > b) {
      j++;
    }
    ans = max(ans, i - j + 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...