#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
class Monster{
public:
int id;
int damage;
int potion;
int compareValue;
Monster(){
}
Monster(int _id, int _damage, int _potion){
this->id = _id;
this->damage = _damage;
this->potion = _potion;
if (_potion - _damage >= 0){
this->compareValue = -100001 + _damage;
}
else{
this->compareValue = 100000 - _potion;
}
};
inline bool operator< (const Monster& right){
return this->compareValue < right.compareValue;
};
};
int main () {
int amountOfMonstres;
long long currentHP;
cin >> amountOfMonstres >> currentHP;
vector<Monster> monsters;
int damage, potion;
for(int id = 1; id<=amountOfMonstres; id++){
cin >> damage >> potion;
monsters.push_back(Monster(id,damage,potion));
}
make_heap (monsters.begin(), monsters.end());
sort_heap (monsters.begin(),monsters.end());
int iterator = 0;
bool died = false;
while((iterator<amountOfMonstres) && (!died)){
if(currentHP - monsters[iterator].damage > 0){
currentHP = currentHP - monsters[iterator].damage + monsters[iterator].potion;
}
else{
died = true;
}
iterator++;
}
if(died){
cout << "NIE\n";
}
else{
cout << "TAK\n" << monsters[0].id;
for (int i=1; i<amountOfMonstres; i++){
cout << ' ' << monsters[i].id;
}
cout << '\n';
}
return 0;
};
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 | #include <iostream> #include <algorithm> #include <vector> using namespace std; class Monster{ public: int id; int damage; int potion; int compareValue; Monster(){ } Monster(int _id, int _damage, int _potion){ this->id = _id; this->damage = _damage; this->potion = _potion; if (_potion - _damage >= 0){ this->compareValue = -100001 + _damage; } else{ this->compareValue = 100000 - _potion; } }; inline bool operator< (const Monster& right){ return this->compareValue < right.compareValue; }; }; int main () { int amountOfMonstres; long long currentHP; cin >> amountOfMonstres >> currentHP; vector<Monster> monsters; int damage, potion; for(int id = 1; id<=amountOfMonstres; id++){ cin >> damage >> potion; monsters.push_back(Monster(id,damage,potion)); } make_heap (monsters.begin(), monsters.end()); sort_heap (monsters.begin(),monsters.end()); int iterator = 0; bool died = false; while((iterator<amountOfMonstres) && (!died)){ if(currentHP - monsters[iterator].damage > 0){ currentHP = currentHP - monsters[iterator].damage + monsters[iterator].potion; } else{ died = true; } iterator++; } if(died){ cout << "NIE\n"; } else{ cout << "TAK\n" << monsters[0].id; for (int i=1; i<amountOfMonstres; i++){ cout << ' ' << monsters[i].id; } cout << '\n'; } return 0; }; |
English