#include <iostream> #include <sstream> int main() { int t; std::string temp; std::getline(std::cin, temp); std::istringstream line(temp); line >> t; for( int y = 0; y < t; y++ ) { //std::string temp; std::getline(std::cin, temp); std::istringstream line(temp); int wynik = 0; long n; long long w; line >> n >> w; long long* table1 = new long long[n]; long long* table2 = new long long[n]; //Fory od wczytywania danych for( int s = 0; s < n; s++ )//Pierwotne polozenie { //std::string temp; std::getline(std::cin, temp); std::istringstream line(temp); line >> table1[(s*4)] >> table1[(s*4)+1] >> table1[(s*4)+2] >> table1[(s*4)+3]; } for( int s = 0; s < n; s++ )//Docelowe polozenie { //std::string temp; std::getline(std::cin, temp); std::istringstream line(temp); line >> table2[(s*4)] >> table2[(s*4)+1] >> table2[(s*4)+2] >> table2[(s*4)+3]; } //Z początkowej perspektywy for( int s = 0; s < n; s++ )//Żeby przelatywał wszystko { for( int z = 0; z < n; z++ ) { if( ( table1[z*4] >= table1[s*4] && table1[z*4] < table2[s*4] ) || ( table1[z*4] < table1[s*4] && table1[z*4] >= table2[s*4] ) ) { if( table1[(s*4)+3]-table1[(s*4)+1] + table1[(z*4)+3]-table1[(z*4)+1] > w ) { wynik = 1; break; } } } } //Z docelowej perspektywy for( int s = 0; s < n; s++ )//Żeby przelatywał wszystko { for( int z = 0; z < n; z++ ) { if( ( table2[z*4] >= table1[s*4] && table2[z*4] < table2[s*4] ) || ( table2[z*4] < table1[s*4] && table2[z*4] >= table2[s*4] ) ) { if( table1[(s*4)+3]-table1[(s*4)+1] + table2[(z*4)+3]-table2[(z*4)+1] > w ) { wynik = 1; break; } } } } //Wyswietlanie wyniku if( wynik == 1 ) { std::cout << "NIE\n"; } else { std::cout << "TAK\n"; } delete[] table1; delete[] table2; } }
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 | #include <iostream> #include <sstream> int main() { int t; std::string temp; std::getline(std::cin, temp); std::istringstream line(temp); line >> t; for( int y = 0; y < t; y++ ) { //std::string temp; std::getline(std::cin, temp); std::istringstream line(temp); int wynik = 0; long n; long long w; line >> n >> w; long long* table1 = new long long[n]; long long* table2 = new long long[n]; //Fory od wczytywania danych for( int s = 0; s < n; s++ )//Pierwotne polozenie { //std::string temp; std::getline(std::cin, temp); std::istringstream line(temp); line >> table1[(s*4)] >> table1[(s*4)+1] >> table1[(s*4)+2] >> table1[(s*4)+3]; } for( int s = 0; s < n; s++ )//Docelowe polozenie { //std::string temp; std::getline(std::cin, temp); std::istringstream line(temp); line >> table2[(s*4)] >> table2[(s*4)+1] >> table2[(s*4)+2] >> table2[(s*4)+3]; } //Z początkowej perspektywy for( int s = 0; s < n; s++ )//Żeby przelatywał wszystko { for( int z = 0; z < n; z++ ) { if( ( table1[z*4] >= table1[s*4] && table1[z*4] < table2[s*4] ) || ( table1[z*4] < table1[s*4] && table1[z*4] >= table2[s*4] ) ) { if( table1[(s*4)+3]-table1[(s*4)+1] + table1[(z*4)+3]-table1[(z*4)+1] > w ) { wynik = 1; break; } } } } //Z docelowej perspektywy for( int s = 0; s < n; s++ )//Żeby przelatywał wszystko { for( int z = 0; z < n; z++ ) { if( ( table2[z*4] >= table1[s*4] && table2[z*4] < table2[s*4] ) || ( table2[z*4] < table1[s*4] && table2[z*4] >= table2[s*4] ) ) { if( table1[(s*4)+3]-table1[(s*4)+1] + table2[(z*4)+3]-table2[(z*4)+1] > w ) { wynik = 1; break; } } } } //Wyswietlanie wyniku if( wynik == 1 ) { std::cout << "NIE\n"; } else { std::cout << "TAK\n"; } delete[] table1; delete[] table2; } } |