#include <stdio.h>
int _read(int *n) {
register char c = 0;
register int res;
while (c != EOF && c < '0')
c=getc_unlocked(stdin);
(*n) = 0;
res = 0;
while (c >= '0' && c <= '9' ) {
(*n)=(*n)*10 + (c-'0');
c=getc_unlocked(stdin);
res |= 1;
}
return(res);
}
typedef struct {
int val;
int count;
int list[100000];
} t_list;
t_list min_w;
t_list max_w;
t_list min_h;
t_list max_h;
int check[100000];
int main() {
int t, n, i;
int w1, w2, h1, h2;
int res;
// scanf("%d", &t);
_read(&t);
while(t--) {
min_w.count = 0;
max_w.count = 0;
min_h.count = 0;
max_h.count = 0;
// scanf("%d", &n);
_read(&n);
for(i=0; i<n; i++) {
// scanf("%d %d %d %d", &w1, &w2, &h1, &h2);
_read(&w1);
_read(&w2);
_read(&h1);
_read(&h2);
if(!min_w.count || w1 < min_w.val) {
min_w.val = w1;
min_w.list[0] = i;
min_w.count = 1;
} else if(w1 == min_w.val) {
min_w.list[min_w.count] = i;
min_w.count++;
}
if(!max_w.count || max_w.val < w2) {
max_w.val = w2;
max_w.list[0] = i;
max_w.count = 1;
} else if(w2 == max_w.val) {
max_w.list[max_w.count] = i;
max_w.count++;
}
if(!min_h.count || h1 < min_h.val) {
min_h.val = h1;
min_h.list[0] = i;
min_h.count = 1;
} else if(h1 == min_h.val) {
min_h.list[min_h.count] = i;
min_h.count++;
}
if(!max_h.count || max_h.val < h2) {
max_h.val = h2;
max_h.list[0] = i;
max_h.count = 1;
} else if(h2 == max_h.val) {
max_h.list[max_h.count] = i;
max_h.count++;
}
}
res = 0;
for(i=0; i<min_w.count; i++) {
check[min_w.list[i]]++;
}
for(i=0; i<max_w.count; i++) {
check[max_w.list[i]]++;
}
for(i=0; i<min_h.count; i++) {
check[min_h.list[i]]++;
}
for(i=0; !res && i<max_h.count; i++) {
check[max_h.list[i]]++;
if(check[max_h.list[i]] == 4)
res = 1;
}
if(t) {
for(i=0; i<n; i++) {
check[i] = 0;
}
}
printf("%s\n", res ? "TAK" : "NIE");
}
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 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 | #include <stdio.h> int _read(int *n) { register char c = 0; register int res; while (c != EOF && c < '0') c=getc_unlocked(stdin); (*n) = 0; res = 0; while (c >= '0' && c <= '9' ) { (*n)=(*n)*10 + (c-'0'); c=getc_unlocked(stdin); res |= 1; } return(res); } typedef struct { int val; int count; int list[100000]; } t_list; t_list min_w; t_list max_w; t_list min_h; t_list max_h; int check[100000]; int main() { int t, n, i; int w1, w2, h1, h2; int res; // scanf("%d", &t); _read(&t); while(t--) { min_w.count = 0; max_w.count = 0; min_h.count = 0; max_h.count = 0; // scanf("%d", &n); _read(&n); for(i=0; i<n; i++) { // scanf("%d %d %d %d", &w1, &w2, &h1, &h2); _read(&w1); _read(&w2); _read(&h1); _read(&h2); if(!min_w.count || w1 < min_w.val) { min_w.val = w1; min_w.list[0] = i; min_w.count = 1; } else if(w1 == min_w.val) { min_w.list[min_w.count] = i; min_w.count++; } if(!max_w.count || max_w.val < w2) { max_w.val = w2; max_w.list[0] = i; max_w.count = 1; } else if(w2 == max_w.val) { max_w.list[max_w.count] = i; max_w.count++; } if(!min_h.count || h1 < min_h.val) { min_h.val = h1; min_h.list[0] = i; min_h.count = 1; } else if(h1 == min_h.val) { min_h.list[min_h.count] = i; min_h.count++; } if(!max_h.count || max_h.val < h2) { max_h.val = h2; max_h.list[0] = i; max_h.count = 1; } else if(h2 == max_h.val) { max_h.list[max_h.count] = i; max_h.count++; } } res = 0; for(i=0; i<min_w.count; i++) { check[min_w.list[i]]++; } for(i=0; i<max_w.count; i++) { check[max_w.list[i]]++; } for(i=0; i<min_h.count; i++) { check[min_h.list[i]]++; } for(i=0; !res && i<max_h.count; i++) { check[max_h.list[i]]++; if(check[max_h.list[i]] == 4) res = 1; } if(t) { for(i=0; i<n; i++) { check[i] = 0; } } printf("%s\n", res ? "TAK" : "NIE"); } return 0; } |
English