#include <cstdio> #include <algorithm> using namespace std; int n, z; struct Map { int d; int a; int index; }; Map map[100001]; bool by_more_health(Map map1, Map map2) { int d1 = map1.a - map1.d; int d2 = map2.a - map2.d; return (d1 >= 0 || d2 >= 0) ? d1 >= d2 : d1 < d2; } int main() { scanf("%d %d", &n, &z); for (int i=0; i<n; i++) { scanf("%d %d", &map[i].d, &map[i].a); map[i].index = i + 1; } sort(map, map + n, by_more_health); for (int i=0; i<n; i++) { z -= map[i].d; if (z <= 0) { printf("NIE\n"); return 0; } z += map[i].a; } printf("TAK\n"); for (int i=0; i<n; i++) { printf("%d ", map[i].index); } 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 | #include <cstdio> #include <algorithm> using namespace std; int n, z; struct Map { int d; int a; int index; }; Map map[100001]; bool by_more_health(Map map1, Map map2) { int d1 = map1.a - map1.d; int d2 = map2.a - map2.d; return (d1 >= 0 || d2 >= 0) ? d1 >= d2 : d1 < d2; } int main() { scanf("%d %d", &n, &z); for (int i=0; i<n; i++) { scanf("%d %d", &map[i].d, &map[i].a); map[i].index = i + 1; } sort(map, map + n, by_more_health); for (int i=0; i<n; i++) { z -= map[i].d; if (z <= 0) { printf("NIE\n"); return 0; } z += map[i].a; } printf("TAK\n"); for (int i=0; i<n; i++) { printf("%d ", map[i].index); } return 0; } |