#include <stdio.h> #include <stdlib.h> #define MAKS_N 50000 struct sam { int sx1, sx2, sy1, sy2, nx1, nx2, ny1, ny2, kols, koln; }; typedef struct sam SAM; SAM a[MAKS_N]; int porownaj_n(const void *e1, const void *e2) { int i1 = *(int *) e1; int i2 = *(int *) e2; int por = a[i1].nx1 - a[i2].nx1; if (por == 0) por = a[i1].nx2 - a[i2].nx2; return por; } int porownaj_s(const void *e1, const void *e2) { int i1 = *(int *) e1; int i2 = *(int *) e2; int por = a[i1].sx1 - a[i2].sx1; if (por == 0) por = a[i1].sx2 - a[i2].sx2; return por; } int main() { int i, j, i0, j0, t, n, w, ok, koln[MAKS_N], kols[MAKS_N]; char wyn[2][4] = {"NIE", "TAK"}; scanf("%d", &t); for (; t; t--) { scanf("%d%d", &n, &w); for (i = 0; i < n; i++) { kols[i] = koln[i] = i; scanf("%d%d%d%d", &a[i].sx1, &a[i].sy1, &a[i].sx2, &a[i].sy2); } for (i = 0; i < n; i++) { scanf("%d%d%d%d", &a[i].nx1, &a[i].ny1, &a[i].nx2, &a[i].ny2); } qsort(kols, n, sizeof(int), porownaj_s); qsort(koln, n, sizeof(int), porownaj_n); for (i = 0; i < n; i++) { a[kols[i]].kols = i; a[koln[i]].koln = i; } for (ok = 1, i = 0; ok && i < n; i++) { i0 = a[koln[i]].kols; if (i < i0) { for (j0 = i0 - 1; ok && j0 >= i; j0--) { j = a[kols[j0]].koln; if (i < j && a[koln[i]].ny2 - a[koln[i]].ny1 + a[koln[j]].ny2 - a[koln[j]].ny1 > w) ok = 0; } } } printf("%s\n", wyn[ok]); } 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 | #include <stdio.h> #include <stdlib.h> #define MAKS_N 50000 struct sam { int sx1, sx2, sy1, sy2, nx1, nx2, ny1, ny2, kols, koln; }; typedef struct sam SAM; SAM a[MAKS_N]; int porownaj_n(const void *e1, const void *e2) { int i1 = *(int *) e1; int i2 = *(int *) e2; int por = a[i1].nx1 - a[i2].nx1; if (por == 0) por = a[i1].nx2 - a[i2].nx2; return por; } int porownaj_s(const void *e1, const void *e2) { int i1 = *(int *) e1; int i2 = *(int *) e2; int por = a[i1].sx1 - a[i2].sx1; if (por == 0) por = a[i1].sx2 - a[i2].sx2; return por; } int main() { int i, j, i0, j0, t, n, w, ok, koln[MAKS_N], kols[MAKS_N]; char wyn[2][4] = {"NIE", "TAK"}; scanf("%d", &t); for (; t; t--) { scanf("%d%d", &n, &w); for (i = 0; i < n; i++) { kols[i] = koln[i] = i; scanf("%d%d%d%d", &a[i].sx1, &a[i].sy1, &a[i].sx2, &a[i].sy2); } for (i = 0; i < n; i++) { scanf("%d%d%d%d", &a[i].nx1, &a[i].ny1, &a[i].nx2, &a[i].ny2); } qsort(kols, n, sizeof(int), porownaj_s); qsort(koln, n, sizeof(int), porownaj_n); for (i = 0; i < n; i++) { a[kols[i]].kols = i; a[koln[i]].koln = i; } for (ok = 1, i = 0; ok && i < n; i++) { i0 = a[koln[i]].kols; if (i < i0) { for (j0 = i0 - 1; ok && j0 >= i; j0--) { j = a[kols[j0]].koln; if (i < j && a[koln[i]].ny2 - a[koln[i]].ny1 + a[koln[j]].ny2 - a[koln[j]].ny1 > w) ok = 0; } } } printf("%s\n", wyn[ok]); } return 0; } |