#include <stdio.h> #include <stdlib.h> int *a, *d, *s; int porow(const void *e1, const void *e2) { int i1 = *(int *) e1; int i2 = *(int *) e2; int a1, a2, d1, d2, r1, r2, wyn; d1 = d[i1]; d2 = d[i2]; a1 = a[i1]; a2 = a[i2]; r1 = d1 - a1; r2 = d2 - a2; if (r1 <= 0) { if (r2 <= 0) { wyn = d1 - d2; if (wyn == 0) wyn = a2 - a1; } else wyn = -1; } else if (r2 > 0) { wyn = d2 - d1; if (wyn == 0) wyn = a2 - a1; } else wyn = 1; return wyn; } int main() { int i, n, z, ok; long long z2; scanf("%d%d", &n, &z); a = malloc(n * sizeof(int)); d = malloc(n * sizeof(int)); s = malloc(n * sizeof(int)); for (i = 0; i < n; i++) { scanf("%d%d", d + i, a + i); s[i] = i; } qsort(s, n, sizeof(int), porow); for (ok = 1, z2 = z, i = 0; ok && i < n; i++) { z2 -= d[s[i]]; if (z2 <= 0) ok = 0; else z2 += a[s[i]]; } if (ok) { printf("TAK\n"); for (i = 0; i < n; i++) printf("%s%d", i > 0 ? " " : "", s[i] + 1); printf("\n"); } else printf("NIE\n"); free(s); free(d); free(a); 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 74 75 76 | #include <stdio.h> #include <stdlib.h> int *a, *d, *s; int porow(const void *e1, const void *e2) { int i1 = *(int *) e1; int i2 = *(int *) e2; int a1, a2, d1, d2, r1, r2, wyn; d1 = d[i1]; d2 = d[i2]; a1 = a[i1]; a2 = a[i2]; r1 = d1 - a1; r2 = d2 - a2; if (r1 <= 0) { if (r2 <= 0) { wyn = d1 - d2; if (wyn == 0) wyn = a2 - a1; } else wyn = -1; } else if (r2 > 0) { wyn = d2 - d1; if (wyn == 0) wyn = a2 - a1; } else wyn = 1; return wyn; } int main() { int i, n, z, ok; long long z2; scanf("%d%d", &n, &z); a = malloc(n * sizeof(int)); d = malloc(n * sizeof(int)); s = malloc(n * sizeof(int)); for (i = 0; i < n; i++) { scanf("%d%d", d + i, a + i); s[i] = i; } qsort(s, n, sizeof(int), porow); for (ok = 1, z2 = z, i = 0; ok && i < n; i++) { z2 -= d[s[i]]; if (z2 <= 0) ok = 0; else z2 += a[s[i]]; } if (ok) { printf("TAK\n"); for (i = 0; i < n; i++) printf("%s%d", i > 0 ? " " : "", s[i] + 1); printf("\n"); } else printf("NIE\n"); free(s); free(d); free(a); return 0; } |