# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
672117 | Hacv16 | Rice Hub (IOI11_ricehub) | C++17 | 0 ms | 0 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
#include "ricehub.h"
using namespace std;
typedef long long ll;
const ll INF = 5e18 + 15;
int n, x[MAX], px[MAX], L;
ll b;
ll sum(int l, int r){
return px[r] - (l == 0 ? 0 : px[l - 1]);
}
bool f(ll s){
for(int l = 0, r = s - 1; r < n; l++, r++){
int m = (l + r) >> 1;
ll cost = 0;
cost += sum(m + 1, r) - (r - m) * x[m];
cost += (m - l) * x[m] - sum(l, m - 1);
if(cost <= b) return true;
}
return false;
}
int besthub(int _n, int _L, int _x[], ll _b){
n = _n, L = _L, b = _b;
for(int i = 0; i < n; i++)
x[i] = _x[i];
for(int i = 1; i < n; i++)
px[i] = x[i] + px[i - 1];
int l = 0, r = n, ans = 0;
while(l <= r){ //bbin na resposta
int m = (l + r) >> 1;
if(f(m)) l = m + 1, ans = m;
else r = m - 1;
}
return ans;
}