提交时间:2026-02-02 14:07:32
运行 ID: 39787
#include<bits/stdc++.h> using namespace std; typedef long long ll; ll a[100005]; ll n,b,x; ll gt(int p){ ll cnt = 0; for(int i = 1;i<=n;i++){ ll r = a[i]%p,d=a[i]/p; ll tmp = p; if(p>a[i]) r=0,d=1,tmp=a[i]; cnt += 1ll*r*(d+1)*(tmp-r)*d+1ll*(d*d+2*d+1)*(r*r-r)/2+1ll*d*d*(tmp-r)*(tmp-r-1)/2; } return cnt*b-1ll*p*x+x; } int main(){ freopen("army.in","r",stdin); freopen("army.out","w",stdout); scanf("%d%d%d",&n,&b,&x); ll cnt = 0; for(int i = 1;i<=n;i++){scanf("%d",&a[i]);cnt=max(cnt,a[i]);} ll l=1,r=cnt; while(l<r){ int mid = (2*l+r)/3,mid1=(l+2*r)/3; if(l==r-1)mid1++; ll k=gt(mid),k1=gt(mid1); if(k>k1){ r=mid1-1; } if(k<k1){ l=mid+1; } if(k==k1){ l=mid+1,r=mid1-1; } } cout<<gt(l)<<endl; }