fork download
  1. #include <iostream>
  2. #include<bits/stdc++.h>
  3. using namespace std;
  4. typedef long long int ll;
  5.  
  6.  
  7.  
  8. long long minDamage(int power, vector<int>& damage, vector<int>& health) {
  9. int n = damage.size();
  10. vector<pair<double, int>> threat(n);
  11. for (int i = 0; i < n; i++) {
  12. double time_to_kill = ceil(double(health[i]) / power);
  13. threat[i] = {double(time_to_kill) / damage[i], i};
  14. }
  15.  
  16. ll total_sum = accumulate(damage.begin(), damage.end(), 0ll);
  17. sort(threat.begin(), threat.end());
  18.  
  19. ll ans = 0;
  20.  
  21. for (int i = 0; i < n; i++) {
  22. int idx = threat[i].second;
  23. int time_to_kill = ceil(double(health[idx]) / power);
  24. ans = ans + total_sum * time_to_kill;
  25. total_sum = total_sum - damage[idx];
  26. }
  27. return ans;
  28. }
  29.  
  30. int main() {
  31. int n;
  32. cin>>n;
  33. int power;
  34. cin>>power;
  35.  
  36. vector<int> damage(n);
  37. vector<int> health(n);
  38. for(int i=0;i<n;i++){
  39. cin>>damage[i];
  40. }
  41. for(int i=0;i<n;i++){
  42. cin>>health[i];
  43.  
  44. }
  45.  
  46. cout<<minDamage(power , damage , health);
  47.  
  48. return 0;
  49. }
Success #stdin #stdout 0s 5320KB
stdin
4 4 
1 2 3 4
4 5 6 8
stdout
39