#include <stdio.h>
#include <stdlib.h>
#include <queue>
using namespace std;
const int MAX_N = 100000;
inline int get_int()
{
int ret = 0;
int c = getchar_unlocked();
while(c<'0' || c>'9') c = getchar_unlocked();
while(c>='0' && c<='9')
{
ret = (ret<<3) + (ret<<1) + (c-'0');
c = getchar_unlocked();
}
return ret;
}
struct Dim
{
int max_w;
int min_w;
int max_h;
int min_h;
int dwdh;
int set()
{
int dw = max_w - min_w;
int dh = max_h - min_h;
dwdh = dw*dh;
}
int get_dwdh() const { return dwdh; }
bool operator<(const Dim & d) const
{
return dwdh < d.dwdh;
}
};
Dim dims[MAX_N];
bool check_dims(int max, int N)
{
for (int i = 0; i < N; i++)
{
if (dims[max].max_w < dims[i].max_w ||
dims[max].max_h < dims[i].max_h ||
dims[max].min_w > dims[i].min_w ||
dims[max].min_h > dims[i].min_h)
{
return false;
}
}
return true;
}
int main()
{
int T = get_int();
while(T--)
{
int N = get_int();
int max = 0;
int max_dwdh = -1;
for (int i = 0; i < N; i++)
{
dims[i].min_w = get_int();
dims[i].max_w = get_int();
dims[i].min_h = get_int();
dims[i].max_h = get_int();
dims[i].set();
if (dims[i].get_dwdh() > max_dwdh)
{
max = i;
max_dwdh = dims[i].get_dwdh();
}
}
bool ret = check_dims(max, N);
printf("%s\n", ret?"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 | #include <stdio.h> #include <stdlib.h> #include <queue> using namespace std; const int MAX_N = 100000; inline int get_int() { int ret = 0; int c = getchar_unlocked(); while(c<'0' || c>'9') c = getchar_unlocked(); while(c>='0' && c<='9') { ret = (ret<<3) + (ret<<1) + (c-'0'); c = getchar_unlocked(); } return ret; } struct Dim { int max_w; int min_w; int max_h; int min_h; int dwdh; int set() { int dw = max_w - min_w; int dh = max_h - min_h; dwdh = dw*dh; } int get_dwdh() const { return dwdh; } bool operator<(const Dim & d) const { return dwdh < d.dwdh; } }; Dim dims[MAX_N]; bool check_dims(int max, int N) { for (int i = 0; i < N; i++) { if (dims[max].max_w < dims[i].max_w || dims[max].max_h < dims[i].max_h || dims[max].min_w > dims[i].min_w || dims[max].min_h > dims[i].min_h) { return false; } } return true; } int main() { int T = get_int(); while(T--) { int N = get_int(); int max = 0; int max_dwdh = -1; for (int i = 0; i < N; i++) { dims[i].min_w = get_int(); dims[i].max_w = get_int(); dims[i].min_h = get_int(); dims[i].max_h = get_int(); dims[i].set(); if (dims[i].get_dwdh() > max_dwdh) { max = i; max_dwdh = dims[i].get_dwdh(); } } bool ret = check_dims(max, N); printf("%s\n", ret?"TAK":"NIE"); } return 0; } |
English