E
问题的关键在于,每个时刻我们可以选择让一个发电站承受power点的损耗。由于目标是最大化总能量,我们应当尽量延迟让任何发电站耐久度降至0的时间。
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N=100010;
ll a[N];
ll b[N];
int main()
{
ll n, p;
cin >> n >> p;
for(int i=1;i<=n;i++)
cin >> a[i];
for(int i=1;i<=n;i++)
cin >> b[i];
ll x = 0, sum = 0;
for(int i=1;i<=n;i++)
{
ll tt = b[i] / p;
if(b[i]%p==0&&tt != 0){
tt --;
}
x += tt;
}
for(int i=1;i<=n;i++)
{
sum += x * a[i];
}
sort(a + 1, a + 1 + n);
for (ll i = 1; i <= n; i ++) {
sum += i * a[i];
}
printf("%lld",sum);
return 0;
}