#include <bits/stdc++.h>
using namespace std;
#define MAX_R 1000000
#include "ricehub.h"
#define ll long long
struct Data {
deque<int> dq;
int sum = 0, lower_sum = 0;
void push_back(int x){
dq.push_back(x);
int sz = dq.size(), mid = sz/2;
if(sz%2==0) lower_sum += dq[mid];
sum += x;
}
void pop_front(){
auto tmp = dq.front(); dq.pop_front();
sum -= tmp; lower_sum -= tmp;
int sz = dq.size(), mid = sz/2;
if(sz%2) lower_sum += dq[mid];
}
ll get_weight(){
int sz = dq.size(), mid = sz/2;
ll sus = dq[mid]*(mid+1) - lower_sum + (sum - lower_sum) - dq[mid]*(sz-mid-1);
return sus;
}
int get_mid(){
int sz = dq.size(), mid = sz/2;
return dq[mid];
}
};
int besthub(int R, int L, int a[], long long B)
{
Data dq;
int l = 0, r = 0, mid, sz, ans = 0, best_ans = 0;
while(r<R){
dq.push_back(a[r]);
while(dq.get_weight()>B) dq.pop_front();
// cerr << r << ' ' << r-dq.dq.size()+1 << ' ' << dq.get_weight() << ' ' << dq.get_mid() << ' ' << dq.dq.size() << endl;
int sz = dq.dq.size();
if(sz>best_ans){
best_ans = sz;
ans = dq.get_mid();
}
r++;
}
return best_ans;
}
# | 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... |