#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; } |
English