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;
}