分析:
还是不太理解贪心的正确性。
代码:
#include <iostream>
#include <cstdio>
#include <cstdlib>
typedef long long LL;
const int MAXN=100005;
int n,d;
LL b,a[MAXN],sum[MAXN];
int main(){
scanf("%d%d%lld",&n,&d,&b);
for(int i=1;i<=n;i++){
scanf("%lld",&a[i]);
sum[i]=sum[i-1]+a[i];
}
int l=1,r=n,ans1=0,ans2=0;
while(l<r){
if(sum[std::min(l+1ll*d*l,1ll*n)]-(l-1-ans1)*b<b) ans1++;
if(sum[n]-sum[std::max(r-1ll*d*l-1,1ll*0)]-(n-r-ans2)*b<b) ans2++;
l++;r--;
}
printf("%d\n",std::max(ans1,ans2));
return 0;
}