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"
//#define int int64_t
using namespace std;
int min(int a, int b){
if(a < b) return a;
return b;
}
int bsearch(int n, int len, vector<int>&fred, vector<long long>&prefix, long long budget){
int l = -1;
int r = n+1;
while(r-l > 1){
int m = (r+l)/2;
int ans = 1e9;
int mid = m/2+1;
for(int i = m; i<=n; ++i){
int hub = fred[mid];
long long one = ((m/2) * hub)-(prefix[mid-1]-prefix[i-m]);
long long two = (prefix[i]-prefix[mid-(1-m%2)]) - ((m/2)*hub);
++mid;
ans = min(ans, one+two);
}
if(ans <= budget) l = m;
else r = m;
}
return l;
}
int besthub(int R, int L, int X[], long long B){
int n = R;
int len = L;
long long budget = B;
vector<long long>prefix(n+1);
for(int i = 1; i<=n; ++i){
prefix[i] = prefix[i-1] + X[i-1];
}
vector<int>fred;
fred.push_back(0);
for(int i = 0; i<n; ++i) fred.push_back(X[i]);
return bsearch(n, len, fred, prefix, budget);
}
# | 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... |