fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. using namespace std;
  5.  
  6. int main() {
  7. int k, n, m;
  8. cin >> k >> n >> m;
  9. vector<pair<int, int>> data(k);
  10.  
  11. for (int i = 0; i < k; ++i) {
  12. cin >> data[i].first >> data[i].second; // a_i, b_i
  13. }
  14.  
  15. // Sắp xếp theo giá trị trọng số lớn nhất giữa a_i và b_i
  16. sort(data.begin(), data.end(), [](pair<int, int> &a, pair<int, int> &b) {
  17. return max(a.first, a.second) > max(b.first, b.second);
  18. });
  19.  
  20. // Tách danh sách a và b
  21. vector<int> group1, group2;
  22. for (int i = 0; i < k; ++i) {
  23. if (group1.size() < n && data[i].first >= data[i].second) {
  24. group1.push_back(data[i].first); // Chọn nhóm loại 1
  25. } else if (group2.size() < m) {
  26. group2.push_back(data[i].second); // Chọn nhóm loại 2
  27. }
  28. }
  29.  
  30. // Tính tổng trọng số
  31. int total_weight = 0;
  32. for (int w : group1) total_weight += w;
  33. for (int w : group2) total_weight += w;
  34.  
  35. cout << total_weight << endl;
  36.  
  37. return 0;
  38. }
  39.  
Success #stdin #stdout 0s 5284KB
stdin
6 4 2
10 9
9 9
8 8
8 7
8 1
8 1
stdout
37