提交时间:2026-02-02 14:32:40
运行 ID: 39794
#include<bits/stdc++.h> using namespace std; long long n,b,X,c[100005]; inline long long ck(long long x){ long long sum=0; for(int i=1;i<=n;i++){ if(c[i]>x){ long long t=c[i]%x; sum=sum+(x-t)*(c[i]/x)*(c[i]-c[i]/x)*b; sum=sum+t*(c[i]/x+1)*(c[i]-c[i]/x-1)*b; } else{ sum=sum+(c[i]-1)*c[i]*b; } } sum/=2; sum=sum-(x-1)*X; return sum; } int main(){ scanf("%lld%lld%lld",&n,&b,&X); for(int i=1;i<=n;i++){ scanf("%lld",&c[i]); } long long l=1,r=200000,ans=0; while(l<=r){ long long mid=(l+r)/2; long long sm=ck(mid),sm2=ck(mid+1); if(sm<=sm2){ ans=sm2; l=mid+1; } else{ ans=sm; r=mid-1; } } printf("%lld",ans); } //k*(c/k)*(c-(c/k))*b //c*(c-(c/k))*b