Submission #36277

#TimeUsernameProblemLanguageResultExecution timeMemory
36277funcsrRice Hub (IOI11_ricehub)C++14
100 / 100
43 ms7092 KiB
#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
#include "ricehub.h"
using namespace std;
#define INF 1145141919
#define rep(i, n) for (int i=0; i<(n); i++)
#define _1 first
#define _2 second
#define all(x) x.begin(), x.end()
#define pb push_back
typedef pair<int, int> P;

int N, L;
long long B;
int X[100000];
long long T[100001];

inline long long sum(int l, int r) {
  return T[r+1] - T[l];
}
inline long long f(int l, int r) {
  int g = (l+r)/2;
  // (1LL*(g-l+1)*X[g] - sum(l, g)) + (sum(g, r) - 1LL*(r-g+1)*X[g]);
  return 1LL*(2*g-l-r)*X[g] + sum(g, r) - sum(l, g);
}

int besthub(int n, int l, int x[], long long b) {
  N = n, L = l, B = b;
  rep(i, N) X[i] = x[i];
  T[0] = 0;
  rep(i, N) T[i+1] = T[i] + X[i];
  int m = 0;
  rep(l, N) {
    int lo = l, hi = N;
    while (hi - lo > 1) {
      int mid = (lo + hi) / 2;
      if (f(l, mid) <= B) lo = mid;
      else hi = mid;
    }
    m = max(m, lo-l+1);
  }
  return m;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...