挺神奇的吧,而且测试点差的挺多的,不像是精度问题
#include<bits/stdc++.h>
using namespace std;
int n,s,sz[100005];
double q,p,k,ans=0;
double kpow(int b,double a){
double ba=a,re=1.0;
while(b!=0){
if(b&1) re*=ba;
ba*=ba;
b>>=1;
}
return re;
}
int main(){
cin>>n>>p>>q>>s;
k=p*1.0/q;
for(int i=1;i<=n;i++) cin>>sz[i];
sort(sz+1,sz+n+1);
cout<<1<<'\n';
for(int i=n;i>=1;i--){
if(sz[i]<sz[n]-s) break;
ans+=(double)k*(sz[i]+s)*kpow(n-i,1-k);
}
ans+=kpow(n,1-k)*sz[n];
cout<<fixed<<setprecision(9)<<ans;
return 0;
}
就是