#include <algorithm> #include <cstdio> using namespace std; struct mirror { mirror() { } mirror(int w1, int w2, int h1, int h2) : w1_(w1), w2_(w2), h1_(h1), h2_(h2) { } bool operator<= (const mirror& mir) const { return w1_ <= mir.w1_ and w2_ >= mir.w2_ and h1_ <= mir.h1_ and h2_ >= mir.h2_; } mirror &operator |=(const mirror& mir) { w1_ = min(w1_, mir.w1_); w2_ = max(w2_, mir.w2_); h1_ = min(h1_, mir.h1_); h2_ = max(h2_, mir.h2_); } private: int w1_, w2_, h1_, h2_; }; mirror getMirror() { int a, b, c, d; scanf("%d %d %d %d", &a, &b, &c, &d); return mirror(a, b, c , d); } int main() { int t; scanf("%d", &t); while (t--) { int n; scanf("%d", &n); mirror base = getMirror(); bool result = true; while (--n) { mirror next = getMirror(); if ( not (next <= base) and not (base <= next)) { result = false; base |= next; } if (next <= base) { base = next; result = true; } } printf("%s\n", result ? "TAK" : "NIE"); } }
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 | #include <algorithm> #include <cstdio> using namespace std; struct mirror { mirror() { } mirror(int w1, int w2, int h1, int h2) : w1_(w1), w2_(w2), h1_(h1), h2_(h2) { } bool operator<= (const mirror& mir) const { return w1_ <= mir.w1_ and w2_ >= mir.w2_ and h1_ <= mir.h1_ and h2_ >= mir.h2_; } mirror &operator |=(const mirror& mir) { w1_ = min(w1_, mir.w1_); w2_ = max(w2_, mir.w2_); h1_ = min(h1_, mir.h1_); h2_ = max(h2_, mir.h2_); } private: int w1_, w2_, h1_, h2_; }; mirror getMirror() { int a, b, c, d; scanf("%d %d %d %d", &a, &b, &c, &d); return mirror(a, b, c , d); } int main() { int t; scanf("%d", &t); while (t--) { int n; scanf("%d", &n); mirror base = getMirror(); bool result = true; while (--n) { mirror next = getMirror(); if ( not (next <= base) and not (base <= next)) { result = false; base |= next; } if (next <= base) { base = next; result = true; } } printf("%s\n", result ? "TAK" : "NIE"); } } |