RT,二分枚举区间长度,代码如下:
#include<algorithm>
#include<iostream>
#include<cstring>
#include<iomanip>
#include<cstdio>
#include<string>
#include<vector>
#include<cmath>
#include<ctime>
#include<deque>
#include<queue>
#include<stack>
#include<list>
using namespace std;
typedef long long ll;
const ll N=3e5;
ll n,a,b,c,s[N+1];
bool check(ll len){
for(ll l=1,r=len;r<=n;l++,r++){
if(s[r]-s[l-1]>=a*(b*r-c*l))return true;
}return false;
}
int main(){
scanf("%lld %lld %lld %lld",&n,&a,&b,&c);
for(ll i=1;i<=n;i++){
scanf("%lld",s+i);
s[i]+=s[i-1];
}
ll l=1,r=n,mid,ans;
while(l<=r){
mid=(l+r)/2;
if(check(mid))l=mid+1,ans=mid;
else r=mid-1;
}printf("%lld\n",ans);
return 0;
}