#include <cstdio> #include <algorithm> using namespace std; struct monster_t { int id; int health; int potion; int diff; }; bool cmp(const monster_t& p, const monster_t& q) { if (p.diff > 0 && q.diff > 0) return p.health < q.health; else if (p.diff >= 0 || q.diff >= 0) return p.diff > q.diff; else return p.potion > q.potion; } int main() { int N; long long H; scanf("%i%lli", &N, &H); monster_t* tab = new monster_t[N]; for (int i=0; i<N; i++) { int a,b; scanf("%i%i", &a, &b); tab[i].id = i+1; tab[i].health = a; tab[i].potion = b; tab[i].diff = b - a; } sort(tab, tab+N, cmp); bool alive = true; for (int i=0; alive && i<N; i++) { // printf("[%i] fight with: %i (h:%i d:%i)\n", H, tab[i].id, tab[i].health, tab[i].diff); if (H <= tab[i].health) { printf("NIE\n"); alive = false; } else { H += tab[i].diff; // printf("H after %i = %i\n", tab[i].id, H); } } if (alive) { printf("TAK\n"); for (int i=0; i<N; i++) printf("%i ", tab[i].id); printf("\n"); } delete [] tab; }
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 | #include <cstdio> #include <algorithm> using namespace std; struct monster_t { int id; int health; int potion; int diff; }; bool cmp(const monster_t& p, const monster_t& q) { if (p.diff > 0 && q.diff > 0) return p.health < q.health; else if (p.diff >= 0 || q.diff >= 0) return p.diff > q.diff; else return p.potion > q.potion; } int main() { int N; long long H; scanf("%i%lli", &N, &H); monster_t* tab = new monster_t[N]; for (int i=0; i<N; i++) { int a,b; scanf("%i%i", &a, &b); tab[i].id = i+1; tab[i].health = a; tab[i].potion = b; tab[i].diff = b - a; } sort(tab, tab+N, cmp); bool alive = true; for (int i=0; alive && i<N; i++) { // printf("[%i] fight with: %i (h:%i d:%i)\n", H, tab[i].id, tab[i].health, tab[i].diff); if (H <= tab[i].health) { printf("NIE\n"); alive = false; } else { H += tab[i].diff; // printf("H after %i = %i\n", tab[i].id, H); } } if (alive) { printf("TAK\n"); for (int i=0; i<N; i++) printf("%i ", tab[i].id); printf("\n"); } delete [] tab; } |