#include <iostream> #include <vector> #include <algorithm> #include <limits> using namespace std; struct Data { unsigned minW, maxW, minH, maxH; }; int main(void) { cin.sync_with_stdio(false); unsigned numberOfTestSuites; cin >> numberOfTestSuites; for (unsigned i = 0; i < numberOfTestSuites; ++i) { unsigned numberOfSubconcractors; cin >> numberOfSubconcractors; vector<Data> offers; offers.reserve(numberOfSubconcractors); Data ref; ref.minW = numeric_limits<unsigned>::max(); ref.maxW = 0; ref.minH = numeric_limits<unsigned>::max(); ref.maxH = 0; for (unsigned j = 0; j < numberOfSubconcractors; ++j) { Data data; cin >> data.minW >> data.maxW >> data.minH >> data.maxH; ref.minW = min(data.minW, ref.minW); ref.maxW = max(data.maxW, ref.maxW); ref.minH = min(data.minH, ref.minH); ref.maxH = max(data.maxH, ref.maxH); offers.push_back(data); } vector<Data>::const_iterator it = offers.begin(); for (; it != offers.end(); ++it) { if (it->minW > ref.minW) continue; if (it->maxW < ref.maxW) continue; if (it->minH > ref.minH) continue; if (it->maxH < ref.maxH) continue; break; } cout << ((offers.end() != it) ? "TAK" : "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 | #include <iostream> #include <vector> #include <algorithm> #include <limits> using namespace std; struct Data { unsigned minW, maxW, minH, maxH; }; int main(void) { cin.sync_with_stdio(false); unsigned numberOfTestSuites; cin >> numberOfTestSuites; for (unsigned i = 0; i < numberOfTestSuites; ++i) { unsigned numberOfSubconcractors; cin >> numberOfSubconcractors; vector<Data> offers; offers.reserve(numberOfSubconcractors); Data ref; ref.minW = numeric_limits<unsigned>::max(); ref.maxW = 0; ref.minH = numeric_limits<unsigned>::max(); ref.maxH = 0; for (unsigned j = 0; j < numberOfSubconcractors; ++j) { Data data; cin >> data.minW >> data.maxW >> data.minH >> data.maxH; ref.minW = min(data.minW, ref.minW); ref.maxW = max(data.maxW, ref.maxW); ref.minH = min(data.minH, ref.minH); ref.maxH = max(data.maxH, ref.maxH); offers.push_back(data); } vector<Data>::const_iterator it = offers.begin(); for (; it != offers.end(); ++it) { if (it->minW > ref.minW) continue; if (it->maxW < ref.maxW) continue; if (it->minH > ref.minH) continue; if (it->maxH < ref.maxH) continue; break; } cout << ((offers.end() != it) ? "TAK" : "NIE") << endl; } } |