#include <iostream> #include <cstdlib> #include <vector> using namespace std; int main() { int w,x1,x2,y1,y2,n; bool odp=true; int licznik; int m=0; int max; int ile; vector <int> odpowiedzi; cin >> ile; for(int i=0; i<ile; i++) { cin >> n >> w; max=100000/w*10; int ** parking = new int * [w]; for(int i=0; i<w; i++) parking[i]=new int[max]; int ** parking2 = new int * [w]; for(int i=0; i<w; i++) parking2[i]=new int[max]; for(int e=0; e<w; e++) for(int t=0; t<max; t++) { parking[e][t]=0; parking2[e][t]=0; } int t[n][4]; for(int i=0; i<n; i++) { cin >> x1 >> y1 >> x2 >> y2; t[i][0]=x1; t[i][1]=y1; t[i][2]=x2; t[i][3]=y2; for(int a=y1; a<y2; a++) for(int b=x1; b<x2; b++) parking[w-a-1][b]=i+1; } int tab[n][4]; for(int i=0; i<n; i++) { cin >> x1 >> y1 >> x2 >> y2; tab[i][0]=x1; tab[i][1]=y1; tab[i][2]=x2; tab[i][3]=y2; for(int a=y1; a<y2; a++) for(int b=x1; b<x2; b++) parking2[w-a-1][b]=i+1; } odp=true; for(int i=0; i<n; i++) { licznik=0; for(int j=0; j<((t[i][0]-tab[i][0])/(t[i][2]-t[i][0])); j++) { m=0; for(int z=0; z<w; z++) for(int q=0; q<t[i][2]-t[i][0]; q++) if(parking[z][t[i][2]-((t[i][2]-t[i][0])*(j+2))+q]==0 || parking[z][t[i][2]-((t[i][2]-t[i][0])*(j+2))+q]==i || parking2[z][t[i][2]-((t[i][2]-t[i][0])*(j+2))+q]==0 || parking2[z][t[i][2]-((t[i][2]-t[i][0])*(j+2))+q]==i) licznik++; m++; } if(licznik<(t[i][3]-t[i][1])*(t[i][2]-t[i][0]) && m>0) odp=false; } if(odp==true) odpowiedzi.push_back(1); else odpowiedzi.push_back(0); for(int i=0; i<w; i++) { delete [] parking[i]; delete [] parking2[i]; } delete [] parking; delete [] parking2; } for(int i=0; i<odpowiedzi.size(); i++) { if(odpowiedzi[i]) cout << "TAK"; else cout << "NIE"; cout << endl; } 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 102 | #include <iostream> #include <cstdlib> #include <vector> using namespace std; int main() { int w,x1,x2,y1,y2,n; bool odp=true; int licznik; int m=0; int max; int ile; vector <int> odpowiedzi; cin >> ile; for(int i=0; i<ile; i++) { cin >> n >> w; max=100000/w*10; int ** parking = new int * [w]; for(int i=0; i<w; i++) parking[i]=new int[max]; int ** parking2 = new int * [w]; for(int i=0; i<w; i++) parking2[i]=new int[max]; for(int e=0; e<w; e++) for(int t=0; t<max; t++) { parking[e][t]=0; parking2[e][t]=0; } int t[n][4]; for(int i=0; i<n; i++) { cin >> x1 >> y1 >> x2 >> y2; t[i][0]=x1; t[i][1]=y1; t[i][2]=x2; t[i][3]=y2; for(int a=y1; a<y2; a++) for(int b=x1; b<x2; b++) parking[w-a-1][b]=i+1; } int tab[n][4]; for(int i=0; i<n; i++) { cin >> x1 >> y1 >> x2 >> y2; tab[i][0]=x1; tab[i][1]=y1; tab[i][2]=x2; tab[i][3]=y2; for(int a=y1; a<y2; a++) for(int b=x1; b<x2; b++) parking2[w-a-1][b]=i+1; } odp=true; for(int i=0; i<n; i++) { licznik=0; for(int j=0; j<((t[i][0]-tab[i][0])/(t[i][2]-t[i][0])); j++) { m=0; for(int z=0; z<w; z++) for(int q=0; q<t[i][2]-t[i][0]; q++) if(parking[z][t[i][2]-((t[i][2]-t[i][0])*(j+2))+q]==0 || parking[z][t[i][2]-((t[i][2]-t[i][0])*(j+2))+q]==i || parking2[z][t[i][2]-((t[i][2]-t[i][0])*(j+2))+q]==0 || parking2[z][t[i][2]-((t[i][2]-t[i][0])*(j+2))+q]==i) licznik++; m++; } if(licznik<(t[i][3]-t[i][1])*(t[i][2]-t[i][0]) && m>0) odp=false; } if(odp==true) odpowiedzi.push_back(1); else odpowiedzi.push_back(0); for(int i=0; i<w; i++) { delete [] parking[i]; delete [] parking2[i]; } delete [] parking; delete [] parking2; } for(int i=0; i<odpowiedzi.size(); i++) { if(odpowiedzi[i]) cout << "TAK"; else cout << "NIE"; cout << endl; } return 0; } |