fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <queue>
  4. #include <algorithm>
  5.  
  6. using namespace std;
  7.  
  8. int main() {
  9. int n, k;
  10. cin >> n >> k;
  11.  
  12. vector<int> b(n);
  13. vector<int> g(n);
  14.  
  15. // Input values for b and g arrays (0-based indexing)
  16. for (int i = 0; i < n; ++i) {
  17. cin >> b[i];
  18. }
  19.  
  20. for (int i = 0; i < n; ++i) {
  21. cin >> g[i];
  22. }
  23.  
  24. priority_queue<int, vector<int>, greater<int>> pq; // Min heap
  25.  
  26. vector<pair<int, int>> sortedPairs;
  27.  
  28. // Store values in a vector of pairs
  29. for (int i = 0; i < n; ++i) {
  30. sortedPairs.push_back({g[i], b[i]});
  31. }
  32.  
  33. // Sort pairs by g[i] in ascending order
  34. sort(sortedPairs.begin(), sortedPairs.end());
  35.  
  36. int sum = 0;
  37. int result = 0;
  38.  
  39. for (int i = n - 1; i >= 0; --i) { // Iterate in reverse order
  40. pq.push(sortedPairs[i].second);
  41. int p = pq.size();
  42.  
  43. if (p <= k - 1) {
  44. sum += sortedPairs[i].second;
  45. } else {
  46. sum += sortedPairs[i].second;
  47. sum -= pq.top();
  48. pq.pop();
  49.  
  50. int temp = sortedPairs[i].first * (sortedPairs[i].second + sum);
  51. result = max(result, temp);
  52. }
  53. }
  54.  
  55. cout << result << endl;
  56.  
  57. return 0;
  58. }
  59.  
Success #stdin #stdout 0s 5272KB
stdin
4
3
1 3 3 2 
2 1 3 4
stdout
12