#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"); } } |
English