fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. using namespace std;
  5.  
  6. struct Orcs {
  7. int grunt;
  8. int headhunter;
  9. };
  10.  
  11. bool compare(Orcs a, Orcs b) {
  12. return a.grunt + a.headhunter > b.grunt + b.headhunter;
  13. }
  14.  
  15. int main() {
  16. int num, requiredGrunts, requiredHeadhunters;;
  17. cin >> num >> requiredGrunts >> requiredHeadhunters;
  18. vector<Orcs> soldiers;
  19. while (num--) {
  20. Orcs temp;
  21. cin >> temp.grunt >> temp.headhunter;
  22. soldiers.push_back(temp);
  23. }
  24. sort(soldiers.begin(), soldiers.end(), compare);
  25. unsigned cnt = 0;
  26. for (auto orc : soldiers) {
  27. if (requiredGrunts > 0 && requiredHeadhunters > 0) {
  28. if (orc.grunt > orc.headhunter) {
  29. cnt += orc.grunt;
  30. --requiredGrunts;
  31. }
  32. else {
  33. cnt += orc.headhunter;
  34. --requiredHeadhunters;
  35. }
  36. }
  37. else if (requiredGrunts > 0) {
  38. cnt += orc.grunt;
  39. --requiredGrunts;
  40. }
  41. else if (requiredHeadhunters > 0) {
  42. cnt += orc.headhunter;
  43. --requiredHeadhunters;
  44. }
  45. else {
  46. cnt += max(orc.grunt, orc.headhunter) == orc.grunt ? orc.grunt : orc.headhunter;
  47. }
  48. cout << cnt << '\n';
  49. }
  50. if (requiredHeadhunters > 0 || requiredGrunts > 0) {
  51. cout << -1;
  52. }
  53. else {
  54. cout << "strength: " << cnt;
  55. }
  56. }
Success #stdin #stdout 0.01s 5408KB
stdin
3 1 1
5 5
6 7
6 8
stdout
8
14
19
strength: 19