思路
从小到达排序后,枚举选择AOE攻击的次数,前面的肯定直接都消灭掉了,算出来后面的剩余的减去AOE伤害
更新最小值即可
#include <bits/stdc++.h> using namespace std; typedef long long ll; ll a[1<<18],b[1<<18]; ll n,x; int main() { cin>>n>>x; ll ans=1e18; for(int i=1;i<=n;i++) cin>>a[i]; sort(a+1,a+1+n); for(int i=1;i<=n;i++) b[i]=b[i-1]+a[i]; for(int i=0;i<=n;i++){ ans=min(ans,1ll*a[i]*x+b[n]-b[i]-(n-i)*a[i]); } cout<<ans; return 0; }