#include <stdio.h> #include <stdlib.h> #define MAX_SIZE 100000 struct pair { int v; int p; }; int cmp(const void* x, const void* y) { return (((struct pair*) y)->v - ((struct pair*) x)->v); } int main(void) { int n, z, i; int a, d; struct pair l[MAX_SIZE]; scanf("%d%d", &n, &z); for (i = 0; i < n; ++i) { scanf("%d%d", &d, &a); l[i].v = a - d; l[i].p = i + 1; } qsort(l, n, sizeof(l[0]), cmp); for (i = 0; (i < n) && (z > 0); ++i) { z += l[i].v; } if ((z > 0) || ((z == 0) && (i == n))) { printf("TAK\n"); printf("%d", l[0].p); for (i = 1; i < n; ++i) { printf(" %d", l[i].p); } printf("\n"); } else { printf("NIE\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 | #include <stdio.h> #include <stdlib.h> #define MAX_SIZE 100000 struct pair { int v; int p; }; int cmp(const void* x, const void* y) { return (((struct pair*) y)->v - ((struct pair*) x)->v); } int main(void) { int n, z, i; int a, d; struct pair l[MAX_SIZE]; scanf("%d%d", &n, &z); for (i = 0; i < n; ++i) { scanf("%d%d", &d, &a); l[i].v = a - d; l[i].p = i + 1; } qsort(l, n, sizeof(l[0]), cmp); for (i = 0; (i < n) && (z > 0); ++i) { z += l[i].v; } if ((z > 0) || ((z == 0) && (i == n))) { printf("TAK\n"); printf("%d", l[0].p); for (i = 1; i < n; ++i) { printf(" %d", l[i].p); } printf("\n"); } else { printf("NIE\n"); } return 0; } |