#include <iostream> #include <algorithm> #include <vector> using namespace std; struct Monster{ long long damage; long long bonusHp; long long number; }monster; vector<Monster> monsterBoss; vector<Monster> monsterLittle; vector<int> tab; bool comp(Monster a, Monster b){ return a.damage < b.damage; } bool comp2(Monster a, Monster b){ return a.bonusHp > b.bonusHp; } void wypisz(long long healthMy){ cout << "moje HP: " << healthMy << endl << "slabe:\n"; for(int i = 0; i < monsterLittle.size(); i++) cout << "obrazenia: " << monsterLittle[i].damage << " eliksir: " << monsterLittle[i].bonusHp << endl; cout << endl << "boss:\n"; for(int i = 0; i < monsterBoss.size(); i++) cout << "obrazenia: " << monsterBoss[i].damage << " eliksir: " << monsterBoss[i].bonusHp << endl; } void wypiszKol(long long &mons){ for(int i = 0; i < mons; i++){ cout << tab[i] + 1 << " "; } } int main() { ios_base::sync_with_stdio(false); long long mons, healthMy; cin >> mons >> healthMy; for(int i = 0; i < mons; i++){ cin >> monster.damage >> monster.bonusHp; monster.number = i; if(monster.bonusHp- monster.damage >= 0){ if(monster.damage >= healthMy){ monsterLittle.push_back(monster); }else {healthMy += monster.bonusHp - monster.damage; tab.push_back(monster.number);} }else monsterBoss.push_back(monster); } sort(monsterLittle.begin(), monsterLittle.end(), comp); sort(monsterBoss.begin(), monsterBoss.end(), comp2); //wypisz(healthMy); for(int i = 0; i < monsterLittle.size(); i++){ if(healthMy - monsterLittle[i].damage <= 0){ cout << "NIE\n"; return 0; } healthMy += monsterLittle[i].bonusHp - monsterLittle[i].damage; tab.push_back(monsterLittle[i].number); } for(int i = 0; i <= monsterBoss.size(); i++){ if(i == monsterBoss.size()){ cout << "TAK\n"; wypiszKol(mons); break; } if(healthMy - monsterBoss[i].damage <= 0){ cout << "NIE\n"; break; } healthMy += monsterBoss[i].bonusHp - monsterBoss[i].damage; tab.push_back(monsterBoss[i].number); } return 0; } /* 10 7 9 10 3 6 14 15 8 2 7 0 3 9 22 23 4 7 5 4 9 6 10 7 1 3 3 6 6 9 7 2 9 2 7 0 3 9 4 7 5 4 9 6 */
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 | #include <iostream> #include <algorithm> #include <vector> using namespace std; struct Monster{ long long damage; long long bonusHp; long long number; }monster; vector<Monster> monsterBoss; vector<Monster> monsterLittle; vector<int> tab; bool comp(Monster a, Monster b){ return a.damage < b.damage; } bool comp2(Monster a, Monster b){ return a.bonusHp > b.bonusHp; } void wypisz(long long healthMy){ cout << "moje HP: " << healthMy << endl << "slabe:\n"; for(int i = 0; i < monsterLittle.size(); i++) cout << "obrazenia: " << monsterLittle[i].damage << " eliksir: " << monsterLittle[i].bonusHp << endl; cout << endl << "boss:\n"; for(int i = 0; i < monsterBoss.size(); i++) cout << "obrazenia: " << monsterBoss[i].damage << " eliksir: " << monsterBoss[i].bonusHp << endl; } void wypiszKol(long long &mons){ for(int i = 0; i < mons; i++){ cout << tab[i] + 1 << " "; } } int main() { ios_base::sync_with_stdio(false); long long mons, healthMy; cin >> mons >> healthMy; for(int i = 0; i < mons; i++){ cin >> monster.damage >> monster.bonusHp; monster.number = i; if(monster.bonusHp- monster.damage >= 0){ if(monster.damage >= healthMy){ monsterLittle.push_back(monster); }else {healthMy += monster.bonusHp - monster.damage; tab.push_back(monster.number);} }else monsterBoss.push_back(monster); } sort(monsterLittle.begin(), monsterLittle.end(), comp); sort(monsterBoss.begin(), monsterBoss.end(), comp2); //wypisz(healthMy); for(int i = 0; i < monsterLittle.size(); i++){ if(healthMy - monsterLittle[i].damage <= 0){ cout << "NIE\n"; return 0; } healthMy += monsterLittle[i].bonusHp - monsterLittle[i].damage; tab.push_back(monsterLittle[i].number); } for(int i = 0; i <= monsterBoss.size(); i++){ if(i == monsterBoss.size()){ cout << "TAK\n"; wypiszKol(mons); break; } if(healthMy - monsterBoss[i].damage <= 0){ cout << "NIE\n"; break; } healthMy += monsterBoss[i].bonusHp - monsterBoss[i].damage; tab.push_back(monsterBoss[i].number); } return 0; } /* 10 7 9 10 3 6 14 15 8 2 7 0 3 9 22 23 4 7 5 4 9 6 10 7 1 3 3 6 6 9 7 2 9 2 7 0 3 9 4 7 5 4 9 6 */ |