#include<bits/stdc++.h>
#define double long double
#define int long long
using namespace std;
const int MAXN=1e6+5;
int n;
int x;
int p,q;
int a[MAXN];
int gcd(int a,int b){
if(a%b==0) return b;
else return gcd(b,a%b);
}
signed main(){
// double st=clock();
// freopen("test.in","r",stdin);
// freopen("test.out","w",stdout);
cin>>n>>x>>p>>q;
int tmpt=gcd(p,q);
p=p/tmpt;
q=q/tmpt;
double p1=p,q1=q;
for(int i=1;i<=n;++i) cin>>a[i];
long long t=0;
int indx=1;
long long sum=0;
double tmp=x*1.0*p1/q1*1.0;
double kk=x*1.0;
while(indx<=n){
t++;
int k=x-1;
while(a[indx]<=k&&indx<=n){
k-=a[indx];
++indx;
}
sum=sum+k+1;
double tm=tmp*1.0*(double)t;
int tt=ceil((tm-(double)sum)/(kk-tmp));
if(tm>sum){
t+=tt;
sum+=tt*x;
}
}
cout<<t<<endl;
// double ed=clock();
return 0;
}
SUB #2和#5各WA了一个点
调一小时了。 跟别人给的AC代码对拍也没拍出来。
求救