fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. long long minDamage(int power, vector<int>& damage, vector<int>& health){
  5. int n = damage.size();
  6. vector<pair<double, int>> ratio(n);
  7. for (int i = 0; i < n; i++){
  8. double temp = ceil((double)health[i]/power);
  9. ratio[i] = {(damage[i]/temp), i}; // d1/m1
  10. }
  11.  
  12. sort(ratio.begin(), ratio.end(), greater<pair<double,int>>());
  13.  
  14. long long total_damage = 0;
  15. long long d = 0;
  16. for (int i : damage){
  17. d += i;
  18. }
  19.  
  20. for (int i = 0; i < n; i++){
  21. int idx = ratio[i].second;
  22. int time_to_kill = ceil((double)health[idx]/power);
  23. total_damage += (d * time_to_kill * 1ll);
  24. d -= damage[idx];
  25.  
  26. }
  27. return total_damage;
  28. }
  29.  
  30. int main() {
  31. // your code goes here
  32. vector<int> damage = {1, 2, 3, 4};
  33. vector<int> health = {4, 5, 6, 8};
  34. int power = 4;
  35. cout << minDamage(power, damage, health);
  36.  
  37. return 0;
  38. }
Success #stdin #stdout 0.01s 5292KB
stdin
Standard input is empty
stdout
39