#include<bits/stdc++.h>
#include "ricehub.h"
using ll = long long;
using namespace std;
ll pre_sum[100002];
ll range_sum(ll lo, ll hi) {
if ( lo == 0) return pre_sum[hi];
return pre_sum[hi] - pre_sum[lo - 1];
}
int besthub(int R, int L, int X[], long long B){
ll lo, hi, lef, rig, mid, lo1, hi1, lo2, hi2, sum;
for (int i = 0; i < R; i ++) {
if ( i == 0) pre_sum[i] = X[i];
else pre_sum[i] = pre_sum[i - 1] + X[i];
}
ll s = 0;
for (int i = 0; i < R; i ++) {
lef = i - 1;
rig = i + 1;
sum = 0;
while ( 1 ) {
if ( lef < 0 && rig >= R) break;
if ( lef < 0) {
if ( ll(sum + X[rig] - X[i]) > B) break;
sum = sum + X[rig] - X[i];
rig ++;
continue;
}
if ( rig >= R) {
if ( ll(sum - X[lef] + X[i]) > B) break;
sum = sum - X[lef] + X[i];
lef --;
continue;
}
if (X[i] - X[lef] <= X[rig] - X[i]) {
if ( sum - X[lef] + X[i] > B) break;
sum = sum - X[lef] + X[i];
lef --;
continue;
}
else {
if ( sum + X[rig] - X[i] > B) break;
sum = sum + X[rig] - X[i];
rig ++;
continue;
}
}
s = max(s, rig - lef - 1);
}
return s;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |