#include "ricehub.h"
#include<bits/stdc++.h>
using namespace std;
int besthub(int R, int L, int X[], long long B)
{
int max_count = 0;
int b_first = 0;
int a_first = 2;
for(int i = X[0]; i <= L; i ++){
int count = 0;
int total = 0;
bool b_finish = false;
bool a_finish = false;
int b = b_first;
int a = a_first;
while(true){
if(b < 0){
b_finish = true;
}
if(a >= R){
a_finish = true;
}
if(a_finish == true || b_finish == true){
max_count = max(count, max_count);
if(i+1 > X[a_first]){
a_first++;
b_first++;
}
if(i+1 > X[R-1]){
b_first = R - 1;
}
break;
}
if(b_finish == false && a_finish == false){
total += min(abs(i - X[b]),abs(i - X[a]));
if(abs(i - X[b]) > abs(i - X[a])){
b ++;
}
else{
a--;
}
if(total > B){
max_count = max(max_count,count);
if(i+1 > X[a_first]){
a_first++;
b_first++;
}
if(i+1 > X[R-1]){
b_first = R - 1;
}
break;
}
count ++;
}
else if(b_finish == false && a_finish == true){
total+= abs(i - X[b]);
if(total > B){
max_count = max(max_count,count);
if(i+1 > X[a_first]){
a_first++;
b_first++;
}
if(i+1 > X[R-1]){
b_first = R - 1;
}
break;
}
count ++;
}
else if(b_finish == true && a_finish == false){
total+= abs(i - X[a]);
if(total > B){
max_count = max(max_count,count);
if(i+1 > X[a_first]){
a_first++;
b_first++;
}
if(i+1 > X[R-1]){
b_first = R - 1;
}
break;
}
count ++;
}
b--;
a++;
}
}
return max_count;
}