Submission #1348344

#TimeUsernameProblemLanguageResultExecution timeMemory
1348344comgaTramAnhRice Hub (IOI11_ricehub)C++20
100 / 100
12 ms1980 KiB
#include <bits/stdc++.h> 
#include "ricehub.h"
using namespace std;
long long sum[100005];
int a[100005];  
long long getSum(int l, int r) {
  long long ret = sum[r]; 
  ret -= sum[l];
  ret += a[l];
  return ret; 
}
int besthub(int n, int L, int X[], long long B) {
  for (int i = 0; i < n; i++) {
    a[i] = X[i]; 
  }
  sum[0] = a[0];
  for (int i = 1; i < n; i++) {
    sum[i] = sum[i - 1] + a[i]; 
  }  
  int ans = -1; 
  for (int i = 0; i < n; i++) {
    int lo = i;
    int hi = n - 1; 
    int pos = -1;
    while (lo <= hi) {
      int mid = (lo + hi) / 2; 
      int med = (i + mid) / 2; 
      long long sumLeft = (long long) (med - i + 1) * a[med] - getSum(i, med); 
      long long sumRight = getSum(med + 1, mid) - (long long) (mid - med) * a[med];
      if (sumLeft + sumRight <= B) {
        pos = mid; 
        lo = mid + 1; 
      }
      else {
        hi = mid - 1; 
      }
    }
    ans = max(ans, pos - i + 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...