#include <bits/stdc++.h>
using namespace std;
long long minDamage(int power, vector<int>& damage, vector<int>& health){
int n = damage.size();
vector<pair<double, int>> ratio(n);
for (int i = 0; i < n; i++){
double temp = ceil((double)health[i]/power);
ratio[i] = {(damage[i]/temp), i}; // d1/m1
}
sort(ratio.begin(), ratio.end(), greater<pair<double,int>>());
long long total_damage = 0;
long long d = 0;
for (int i : damage){
d += i;
}
for (int i = 0; i < n; i++){
int idx = ratio[i].second;
int time_to_kill = ceil((double)health[idx]/power);
total_damage += (d * time_to_kill * 1ll);
d -= damage[idx];
}
return total_damage;
}
int main() {
// your code goes here
vector<int> damage = {1, 2, 3, 4};
vector<int> health = {4, 5, 6, 8};
int power = 4;
cout << minDamage(power, damage, health);
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpsb25nIGxvbmcgbWluRGFtYWdlKGludCBwb3dlciwgdmVjdG9yPGludD4mIGRhbWFnZSwgdmVjdG9yPGludD4mIGhlYWx0aCl7CglpbnQgbiA9IGRhbWFnZS5zaXplKCk7Cgl2ZWN0b3I8cGFpcjxkb3VibGUsIGludD4+IHJhdGlvKG4pOwoJZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspewoJCWRvdWJsZSB0ZW1wID0gY2VpbCgoZG91YmxlKWhlYWx0aFtpXS9wb3dlcik7CgkJcmF0aW9baV0gPSB7KGRhbWFnZVtpXS90ZW1wKSwgaX07IC8vIGQxL20xCgl9CgkKCXNvcnQocmF0aW8uYmVnaW4oKSwgcmF0aW8uZW5kKCksIGdyZWF0ZXI8cGFpcjxkb3VibGUsaW50Pj4oKSk7CgkKCWxvbmcgbG9uZyB0b3RhbF9kYW1hZ2UgPSAwOwoJbG9uZyBsb25nIGQgPSAwOwoJZm9yIChpbnQgaSA6IGRhbWFnZSl7CgkJZCArPSBpOwoJfQoJCglmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKyl7CgkJaW50IGlkeCA9IHJhdGlvW2ldLnNlY29uZDsKCQlpbnQgdGltZV90b19raWxsID0gY2VpbCgoZG91YmxlKWhlYWx0aFtpZHhdL3Bvd2VyKTsKCQl0b3RhbF9kYW1hZ2UgKz0gKGQgKiB0aW1lX3RvX2tpbGwgKiAxbGwpOwoJCWQgLT0gZGFtYWdlW2lkeF07CgkJCgl9CglyZXR1cm4gdG90YWxfZGFtYWdlOwp9CgppbnQgbWFpbigpIHsKCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCXZlY3RvcjxpbnQ+IGRhbWFnZSA9IHsxLCAyLCAzLCA0fTsKCXZlY3RvcjxpbnQ+IGhlYWx0aCA9IHs0LCA1LCA2LCA4fTsKCWludCBwb3dlciA9IDQ7Cgljb3V0IDw8IG1pbkRhbWFnZShwb3dlciwgZGFtYWdlLCBoZWFsdGgpOwoJCglyZXR1cm4gMDsKfQ==