fork download
  1. #include <stdio.h>
  2. #include <vector>
  3. #include <algorithm>
  4. using namespace std;
  5.  
  6. bool f(const pair<int, int> &firstElem, const pair<int, int> &secondElem) {
  7. int big1 = firstElem.first > firstElem.second ? firstElem.first : firstElem.second;
  8. int big2 = secondElem.first > secondElem.second ? secondElem.first : secondElem.second;
  9. return big1 < big2;
  10. }
  11.  
  12. int main() {
  13. int n, g, h, v1, v2, i, sum = 0;
  14. vector<pair<int, int>> orcs;
  15. scanf("%d %d %d", &n, &g, &h);
  16. for (int i = 0; i < n; i++) {
  17. scanf("%d %d", &v1, &v2);
  18. orcs.push_back(pair<int, int>{ v1, v2 });
  19. }
  20. if (n < g + h) {
  21. printf("%d\n", -1);
  22. return 0;
  23. }
  24. v1 = v2 = 0;
  25. sort(orcs.begin(), orcs.end(), f);
  26. for (int i = orcs.size() - 1; i >= 0; i--) {
  27. if (g - v1 == i + 1) {
  28. sum += orcs[i].first;
  29. v1++;
  30. }
  31. else if (h - v2 == i + 1) {
  32. sum += orcs[i].second;
  33. v2++;
  34. }
  35. else {
  36. if (orcs[i].first >= orcs[i].second) {
  37. sum += orcs[i].first;
  38. v1++;
  39. }
  40. else {
  41. sum += orcs[i].second;
  42. v2++;
  43. }
  44. }
  45. }
  46. printf("%d\n", sum);
  47. return 0;
  48. }
Success #stdin #stdout 0s 16064KB
stdin
3 0 3
5 2
6 1
7 0
stdout
3