//---===--- #include <stdio.h> #include <unistd.h> typedef unsigned int uint; char buf_in[4096000]; int buf_in_head = 0; int buf_in_tail = 0; static int getChar(void) { while (buf_in_head == buf_in_tail) { int rv = read(0, buf_in, sizeof(buf_in)); if (rv > 0) { buf_in_head = 0; buf_in_tail = rv; break; }; if (rv == 0) return EOF; } return buf_in[buf_in_head++]; } // only 1 call is safe, and only if previously getChar() had been called. static void ungetChar(void) { --buf_in_head; } static uint getUInt() { uint v; int c; for (;;) { c = getChar(); if (c < '0') continue; if (c > '9') continue; v = c - '0'; break; }; for (;;) { c = getChar(); if (c < '0') break; if (c > '9') break; v *= 10; v += c - '0'; }; ungetChar(); return v; } //---===--- void solve (void) { // 2 <= n <= 100,000 uint n = getUInt(); // 1 <= w1 <= w2 <= 1,000,000,000 // 1 <= h1 <= h2 <= 1,000,000,000 uint w1 = getUInt(); uint w2 = getUInt(); uint h1 = getUInt(); uint h2 = getUInt(); uint ok = 1; while (--n) { // 1 <= w3 <= w4 <= 1,000,000,000 // 1 <= h3 <= h4 <= 1,000,000,000 uint w3 = getUInt(); uint w4 = getUInt(); uint h3 = getUInt(); uint h4 = getUInt(); if (w3 < w1) { w1 = w3; ok = 0; }; if (w4 > w2) { w2 = w4; ok = 0; }; if (h3 < h1) { h1 = h3; ok = 0; }; if (h4 > h2) { h2 = h4; ok = 0; }; if (w3 == w1) if (w4 == w2) if (h3 == h1) if (h4 == h2) ok = 1; }; printf(ok ? "TAK\n" : "NIE\n"); } int main (void) { // 1 <= t <= 10 uint t = getUInt(); while (t--) solve(); 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 77 78 79 80 81 82 83 84 85 86 | //---===--- #include <stdio.h> #include <unistd.h> typedef unsigned int uint; char buf_in[4096000]; int buf_in_head = 0; int buf_in_tail = 0; static int getChar(void) { while (buf_in_head == buf_in_tail) { int rv = read(0, buf_in, sizeof(buf_in)); if (rv > 0) { buf_in_head = 0; buf_in_tail = rv; break; }; if (rv == 0) return EOF; } return buf_in[buf_in_head++]; } // only 1 call is safe, and only if previously getChar() had been called. static void ungetChar(void) { --buf_in_head; } static uint getUInt() { uint v; int c; for (;;) { c = getChar(); if (c < '0') continue; if (c > '9') continue; v = c - '0'; break; }; for (;;) { c = getChar(); if (c < '0') break; if (c > '9') break; v *= 10; v += c - '0'; }; ungetChar(); return v; } //---===--- void solve (void) { // 2 <= n <= 100,000 uint n = getUInt(); // 1 <= w1 <= w2 <= 1,000,000,000 // 1 <= h1 <= h2 <= 1,000,000,000 uint w1 = getUInt(); uint w2 = getUInt(); uint h1 = getUInt(); uint h2 = getUInt(); uint ok = 1; while (--n) { // 1 <= w3 <= w4 <= 1,000,000,000 // 1 <= h3 <= h4 <= 1,000,000,000 uint w3 = getUInt(); uint w4 = getUInt(); uint h3 = getUInt(); uint h4 = getUInt(); if (w3 < w1) { w1 = w3; ok = 0; }; if (w4 > w2) { w2 = w4; ok = 0; }; if (h3 < h1) { h1 = h3; ok = 0; }; if (h4 > h2) { h2 = h4; ok = 0; }; if (w3 == w1) if (w4 == w2) if (h3 == h1) if (h4 == h2) ok = 1; }; printf(ok ? "TAK\n" : "NIE\n"); } int main (void) { // 1 <= t <= 10 uint t = getUInt(); while (t--) solve(); return 0; } |