#include <cstdio> int main(){ int k; scanf("%d", &k); while(k > 0){ k--; int wysokosc; int ilosc_samochodow; scanf("%d", &ilosc_samochodow); scanf("%d", &wysokosc); int x1[ilosc_samochodow]; int y1[ilosc_samochodow]; int x2[ilosc_samochodow]; int y2[ilosc_samochodow]; for(int i = 0; i < ilosc_samochodow; i++){ //printf("%s\n", "pierwsza petla"); scanf("%d", &x1[i]); scanf("%d", &y1[i]); scanf("%d", &x2[i]); scanf("%d", &y2[i]); } int x1_tmp, y1_tmp, x2_tmp, y2_tmp; int i = 0; bool flaga = true; while(/*flaga == true && */i < ilosc_samochodow){ //printf("%s\n", "druga petla"); //for(int i = 0; i < ilosc_samochodow; i++){ scanf("%d", &x1_tmp); scanf("%d", &y1_tmp); scanf("%d", &x2_tmp); scanf("%d", &y2_tmp); if(x1_tmp == x1[i] && y1_tmp == y1[i] && x2_tmp == x2[i] && y2_tmp == y2[i]){ i++; continue; } if(x1[i] < x1_tmp){//przenosimy figore na prawo int j = 0; while(flaga == true && j < ilosc_samochodow){ //for(int j = i+1; j < ilosc_samochodow; j++){ if(x1[j] >= x2[i] && x2[j] <= x2_tmp && i != j){//znaczy ze sprawdzana figura należy do przedzialu - trzeba spr wysokosci if(wysokosc - (y2[j] - y1[j]) == 0 || wysokosc - (y2[j] - y1[j]) - (y2[i] - y1[i]) < 0){//nie mina sie flaga = false; } } j++; } } else{//przenosimy figore na lewo int j = 0; while(flaga == true && j < ilosc_samochodow){ if(x1[j] >= x1_tmp && x2[j] <= x1[i] && i != j){//znaczy ze sprawdzana figura należy do przedzialu - trzeba spr wysokosci if(wysokosc - (y2[j] - y1[j]) == 0 ||wysokosc - (y2[j] - y1[j]) - (y2[i] - y1[i]) < 0){//nie mina sie flaga = false; } } j++; } } i++; } if(flaga == true) printf("%s\n", "TAK"); else printf("%s\n", "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 | #include <cstdio> int main(){ int k; scanf("%d", &k); while(k > 0){ k--; int wysokosc; int ilosc_samochodow; scanf("%d", &ilosc_samochodow); scanf("%d", &wysokosc); int x1[ilosc_samochodow]; int y1[ilosc_samochodow]; int x2[ilosc_samochodow]; int y2[ilosc_samochodow]; for(int i = 0; i < ilosc_samochodow; i++){ //printf("%s\n", "pierwsza petla"); scanf("%d", &x1[i]); scanf("%d", &y1[i]); scanf("%d", &x2[i]); scanf("%d", &y2[i]); } int x1_tmp, y1_tmp, x2_tmp, y2_tmp; int i = 0; bool flaga = true; while(/*flaga == true && */i < ilosc_samochodow){ //printf("%s\n", "druga petla"); //for(int i = 0; i < ilosc_samochodow; i++){ scanf("%d", &x1_tmp); scanf("%d", &y1_tmp); scanf("%d", &x2_tmp); scanf("%d", &y2_tmp); if(x1_tmp == x1[i] && y1_tmp == y1[i] && x2_tmp == x2[i] && y2_tmp == y2[i]){ i++; continue; } if(x1[i] < x1_tmp){//przenosimy figore na prawo int j = 0; while(flaga == true && j < ilosc_samochodow){ //for(int j = i+1; j < ilosc_samochodow; j++){ if(x1[j] >= x2[i] && x2[j] <= x2_tmp && i != j){//znaczy ze sprawdzana figura należy do przedzialu - trzeba spr wysokosci if(wysokosc - (y2[j] - y1[j]) == 0 || wysokosc - (y2[j] - y1[j]) - (y2[i] - y1[i]) < 0){//nie mina sie flaga = false; } } j++; } } else{//przenosimy figore na lewo int j = 0; while(flaga == true && j < ilosc_samochodow){ if(x1[j] >= x1_tmp && x2[j] <= x1[i] && i != j){//znaczy ze sprawdzana figura należy do przedzialu - trzeba spr wysokosci if(wysokosc - (y2[j] - y1[j]) == 0 ||wysokosc - (y2[j] - y1[j]) - (y2[i] - y1[i]) < 0){//nie mina sie flaga = false; } } j++; } } i++; } if(flaga == true) printf("%s\n", "TAK"); else printf("%s\n", "NIE"); } return 0; } |