#include <cstdio> #include <algorithm> using namespace std; struct Rect{ int p[4]; void Read(){ for(int i=0;i<4;++i) scanf("%d", p+i); } bool Covers(const Rect& r){ for(int i=0;i<4;++i) if(i&1){ if(p[i]<r.p[i]) return false; }else if(p[i]>r.p[i]) return false; return true; } void Extend(const Rect& r){ for(int i=0;i<4;++i) if(i&1) p[i]=max(p[i], r.p[i]); else p[i]=min(p[i], r.p[i]); } }; int main() { Rect a, b, c; int t, n; scanf("%d", &t); while(t--){ scanf("%d", &n); b.Read(); c=b; while(--n){ a.Read(); c.Extend(a); if(a.Covers(c)) b=a; } if(b.Covers(c)) printf("TAK\n"); else printf("NIE\n"); } }
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 | #include <cstdio> #include <algorithm> using namespace std; struct Rect{ int p[4]; void Read(){ for(int i=0;i<4;++i) scanf("%d", p+i); } bool Covers(const Rect& r){ for(int i=0;i<4;++i) if(i&1){ if(p[i]<r.p[i]) return false; }else if(p[i]>r.p[i]) return false; return true; } void Extend(const Rect& r){ for(int i=0;i<4;++i) if(i&1) p[i]=max(p[i], r.p[i]); else p[i]=min(p[i], r.p[i]); } }; int main() { Rect a, b, c; int t, n; scanf("%d", &t); while(t--){ scanf("%d", &n); b.Read(); c=b; while(--n){ a.Read(); c.Extend(a); if(a.Covers(c)) b=a; } if(b.Covers(c)) printf("TAK\n"); else printf("NIE\n"); } } |