#include <iostream>
#include <list>
using namespace std;
typedef struct car_struct {
int leftBefore;
int leftAfter;
int height;
} car;
bool initial_compare(const car& c1, const car& c2) {
return c1.leftBefore <= c2.leftBefore;
}
void sort_after(list<car>::iterator begin, list<car>::iterator end, int height) {
list<car>::iterator i, k;
for (i = begin; i != end; i++) {
for (k = begin; k != i; k++) {
if (i->leftAfter < k->leftAfter) {
if (i->height + k->height > height) {
throw 1;
} else {
iter_swap(i, k);
}
}
}
}
}
int main() {
int tests;
cin >> tests;
while (tests-- > 0) {
int cars, height;
cin >> cars >> height;
list<car> carList;
for (int i = 0; i < cars; i++) {
int x1, y1, x2, y2;
cin >> x1 >> y1 >> x2 >> y2;
car c;
c.leftBefore = x1;
c.height = y2 - y1;
carList.push_back(c);
}
for (list<car>::iterator it = carList.begin(); it != carList.end(); ++it) {
int x1, y1, x2, y2;
cin >> x1 >> y1 >> x2 >> y2;
it->leftAfter = x1;
}
carList.sort(initial_compare);
try {
sort_after(carList.begin(), carList.end(), height);
cout << "TAK" << endl;
} catch (int i) {
cout << "NIE" << endl;
}
}
}
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 | #include <iostream> #include <list> using namespace std; typedef struct car_struct { int leftBefore; int leftAfter; int height; } car; bool initial_compare(const car& c1, const car& c2) { return c1.leftBefore <= c2.leftBefore; } void sort_after(list<car>::iterator begin, list<car>::iterator end, int height) { list<car>::iterator i, k; for (i = begin; i != end; i++) { for (k = begin; k != i; k++) { if (i->leftAfter < k->leftAfter) { if (i->height + k->height > height) { throw 1; } else { iter_swap(i, k); } } } } } int main() { int tests; cin >> tests; while (tests-- > 0) { int cars, height; cin >> cars >> height; list<car> carList; for (int i = 0; i < cars; i++) { int x1, y1, x2, y2; cin >> x1 >> y1 >> x2 >> y2; car c; c.leftBefore = x1; c.height = y2 - y1; carList.push_back(c); } for (list<car>::iterator it = carList.begin(); it != carList.end(); ++it) { int x1, y1, x2, y2; cin >> x1 >> y1 >> x2 >> y2; it->leftAfter = x1; } carList.sort(initial_compare); try { sort_after(carList.begin(), carList.end(), height); cout << "TAK" << endl; } catch (int i) { cout << "NIE" << endl; } } } |
English