# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
130307 | UserIsUndefined | Rice Hub (IOI11_ricehub) | C++14 | 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>
#define ll long long
using namespace std;
int R, L, X[100005];
ll money, pre[100005];
bool ok(int mid){
for(int i=0; i<=R-mid; i++){
int pos = mid / 2 + i;
int A = mid / 2;
int B = mid - A;
ll S1 = pre[i + A - 1];
if(i > 0)
S1 -= pre[i - 1];
ll S2 = pre[pos + B - 1];
if(pos > 0)
S2 -= pre[pos - 1];
ll cost = A * X[pos] - S1 + S2 - B * X[pos];
if(cost <= money)
return 1;
}
return 0;
}
int main()
{
scanf("%d %d %lld", &R, &L, &money);
for(int i=0; i<R; i++)
scanf("%d", X + i);
pre[0] = X[0];
for(int i=1; i<R; i++)
pre[i] = pre[i - 1] + X[i];
int st = 1, en = R;
while(st < en){
int mid = (st + en + 1) / 2;
if(ok(mid))
st = mid;
else
en = mid - 1;
}
printf("%d", st);
return 0;
}