#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;
struct samochod
{
int x1;
int y1;
int x2;
int y2;
int num;
bool operator() (const samochod a, const samochod b)
{
if (a.x1 > b.x1) return false;
if (a.x1 < b.x1) return true;
return a.y1 < b.y1;
}
};
const int ROZM = 50009;
typedef pair<int,int> para;
vector<samochod> sam, sam2;
vector<para> pary;
int test, n, wys, a,b,c,d, poz[ROZM];
int main()
{
scanf("%d",&test);
for (int j = 0; j < test; j++)
{
int pom = 0;
scanf("%d%d",&n,&wys);
for (int i = 1; i <= n; i++)
{
scanf("%d%d%d%d",&a,&b,&c,&d);
samochod z = {a,b,c,d,i};
sam.push_back(z);
}
sort(sam.begin(),sam.end(),samochod());
for (int i = 1; i <= n; i++)
{
scanf("%d%d%d%d",&a,&b,&c,&d);
samochod z = {a,b,c,d,i};
sam2.push_back(z);
}
sort(sam2.begin(),sam2.end(),samochod());
//for (int i = 0; i < n; i++)
// printf("%d %d %d %d %d\n", sam[i].x1, sam[i].y1, sam[i].x2, sam[i].y2, sam[i].num);
// OKEJ
for (int i = 0; i < n; i++)
{
int pom = 0;
if (sam[i].y2 > sam[i].y1)
pom = sam[i].y2 - sam[i].y1;
else
pom = sam[i].y1 - sam[i].y2;
for (int j = 0; j < i; j++)
{
if (wys < pom + (sam[j].y2 - sam[j].y1) && sam[j].y2 > sam[j].y1)
pary.push_back(para(sam[j].num,sam[i].num));
if (sam[j].y2 < sam[j].y1 && wys < pom + (sam[j].y1 - sam[j].y2))
pary.push_back(para(sam[j].num,sam[i].num));
}
for (int j = i + 1; j < n; j++)
{
if (wys < pom + (sam[j].y2 - sam[j].y1) && sam[j].y2 > sam[j].y1)
pary.push_back(para(sam[i].num,sam[j].num));
if (sam[j].y2 < sam[j].y1 && wys < pom + (sam[j].y1 - sam[j].y2))
pary.push_back(para(sam[i].num,sam[j].num));
}
}
//for (int i = 0; i < pary.size(); i++)
// printf("%d %d\n",pary[i].first, pary[i].second);
//scanf("%d ",&a);
for (int i = 0; i < n; i++)
poz[sam2[i].num] = i;
for (int i = 0; i < pary.size(); i++)
{
if (poz[pary[i].first] > poz[pary[i].second])
{
printf("NIE\n"); pom = 1; break;
}
}
if (pom == 0)
printf("TAK\n");
pom = 0;
pary.resize(0);
sam.resize(0);
sam2.resize(0);
}
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 | #include <cstdio> #include <algorithm> #include <vector> using namespace std; struct samochod { int x1; int y1; int x2; int y2; int num; bool operator() (const samochod a, const samochod b) { if (a.x1 > b.x1) return false; if (a.x1 < b.x1) return true; return a.y1 < b.y1; } }; const int ROZM = 50009; typedef pair<int,int> para; vector<samochod> sam, sam2; vector<para> pary; int test, n, wys, a,b,c,d, poz[ROZM]; int main() { scanf("%d",&test); for (int j = 0; j < test; j++) { int pom = 0; scanf("%d%d",&n,&wys); for (int i = 1; i <= n; i++) { scanf("%d%d%d%d",&a,&b,&c,&d); samochod z = {a,b,c,d,i}; sam.push_back(z); } sort(sam.begin(),sam.end(),samochod()); for (int i = 1; i <= n; i++) { scanf("%d%d%d%d",&a,&b,&c,&d); samochod z = {a,b,c,d,i}; sam2.push_back(z); } sort(sam2.begin(),sam2.end(),samochod()); //for (int i = 0; i < n; i++) // printf("%d %d %d %d %d\n", sam[i].x1, sam[i].y1, sam[i].x2, sam[i].y2, sam[i].num); // OKEJ for (int i = 0; i < n; i++) { int pom = 0; if (sam[i].y2 > sam[i].y1) pom = sam[i].y2 - sam[i].y1; else pom = sam[i].y1 - sam[i].y2; for (int j = 0; j < i; j++) { if (wys < pom + (sam[j].y2 - sam[j].y1) && sam[j].y2 > sam[j].y1) pary.push_back(para(sam[j].num,sam[i].num)); if (sam[j].y2 < sam[j].y1 && wys < pom + (sam[j].y1 - sam[j].y2)) pary.push_back(para(sam[j].num,sam[i].num)); } for (int j = i + 1; j < n; j++) { if (wys < pom + (sam[j].y2 - sam[j].y1) && sam[j].y2 > sam[j].y1) pary.push_back(para(sam[i].num,sam[j].num)); if (sam[j].y2 < sam[j].y1 && wys < pom + (sam[j].y1 - sam[j].y2)) pary.push_back(para(sam[i].num,sam[j].num)); } } //for (int i = 0; i < pary.size(); i++) // printf("%d %d\n",pary[i].first, pary[i].second); //scanf("%d ",&a); for (int i = 0; i < n; i++) poz[sam2[i].num] = i; for (int i = 0; i < pary.size(); i++) { if (poz[pary[i].first] > poz[pary[i].second]) { printf("NIE\n"); pom = 1; break; } } if (pom == 0) printf("TAK\n"); pom = 0; pary.resize(0); sam.resize(0); sam2.resize(0); } return 0; } |
English