#include <iostream> using namespace std; int main () { ios_base::sync_with_stdio(0); int pierw[50000][4], doc[50000][4], n, w, t, wektor[50000],u; bool x=true; cin>>t; for (int z=0; z<t; z++) { cin>>n>>w; for (int i=0; i<n; i++) { cin>>pierw[i][0]>>pierw[i][1]>>pierw[i][2]>>pierw[i][3]; if (pierw[i][0]>pierw[i][2]) {u=pierw[i][0]; pierw[i][0]=pierw[i][2]; pierw[i][2]=u;} if (pierw[i][1]>pierw[i][3]) {u=pierw[i][1]; pierw[i][1]=pierw[i][3]; pierw[i][3]=u;} } for (int i=0; i<n; i++) { cin>>doc[i][0]>>doc[i][1]>>doc[i][2]>>doc[i][3]; if (doc[i][0]>doc[i][2]) {u=doc[i][0]; doc[i][0]=doc[i][2]; doc[i][2]=u;} if (doc[i][1]>doc[i][3]) {u=doc[i][1]; doc[i][1]=doc[i][3]; doc[i][3]=u;} wektor[i]=doc[i][2]-pierw[i][2]; } x=true; for (int i=0; i<n && x==true; i++) { for (int j=i+1; j<n; j++) { if (wektor[i]>0 && wektor[j]<0) { if ( (pierw[i][0]<pierw[j][2] && doc[i][2]>doc[j][0]) || ( pierw[i][2]<pierw[j][0] && doc[i][0]>doc[j][2])) { if ((doc[i][3]-doc[i][1])+(doc[j][3]-doc[j][1])>w) {x=false; break;} } } if (wektor[i]>0 && wektor[j]>0) { if ( (pierw[i][2]<=pierw[j][0] && doc[i][2]>doc[j][0]) || ( pierw[i][0]>=pierw[j][2] && doc[i][0]<doc[j][2])) { if ((doc[i][3]-doc[i][1])+(doc[j][3]-doc[j][1])>w) {x=false; break;} } } if (wektor[i]<0 && wektor[j]>0) { if ( (pierw[i][2]<pierw[j][0] && doc[i][0]>doc[j][2]) || ( pierw[i][0]<pierw[j][2] && doc[i][2]>doc[j][0])) { if ((doc[i][3]-doc[i][1])+(doc[j][3]-doc[j][1])>w) {x=false; break;} } } if (wektor[i]<0 && wektor[j]<0) { if ( (pierw[i][0]<=pierw[j][2] && doc[i][0]>doc[j][2]) || ( pierw[i][2]>=pierw[j][0] && doc[i][2]<doc[j][0])) { if ((doc[i][3]-doc[i][1])+(doc[j][3]-doc[j][1])>w) {x=false; break;} } } if (wektor[i]==0 && wektor[j]!=0) { if ( doc[i][2]>doc[j][0] && pierw[j][0]>=pierw[i][2] && wektor[j]<0) { if ((doc[i][3]-doc[i][1])+(doc[j][3]-doc[j][1])>w) {x=false; break;} } if ( doc[i][0]<doc[j][2] && pierw[j][2]<=pierw[i][0] && wektor[j]>0) { if (((doc[i][3]-doc[i][1])+(doc[j][3]-doc[j][1]))>w) {x=false; break;} } } } } if ( x==true ) cout<<"TAK"<<endl; else cout<<"NIE"<<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> using namespace std; int main () { ios_base::sync_with_stdio(0); int pierw[50000][4], doc[50000][4], n, w, t, wektor[50000],u; bool x=true; cin>>t; for (int z=0; z<t; z++) { cin>>n>>w; for (int i=0; i<n; i++) { cin>>pierw[i][0]>>pierw[i][1]>>pierw[i][2]>>pierw[i][3]; if (pierw[i][0]>pierw[i][2]) {u=pierw[i][0]; pierw[i][0]=pierw[i][2]; pierw[i][2]=u;} if (pierw[i][1]>pierw[i][3]) {u=pierw[i][1]; pierw[i][1]=pierw[i][3]; pierw[i][3]=u;} } for (int i=0; i<n; i++) { cin>>doc[i][0]>>doc[i][1]>>doc[i][2]>>doc[i][3]; if (doc[i][0]>doc[i][2]) {u=doc[i][0]; doc[i][0]=doc[i][2]; doc[i][2]=u;} if (doc[i][1]>doc[i][3]) {u=doc[i][1]; doc[i][1]=doc[i][3]; doc[i][3]=u;} wektor[i]=doc[i][2]-pierw[i][2]; } x=true; for (int i=0; i<n && x==true; i++) { for (int j=i+1; j<n; j++) { if (wektor[i]>0 && wektor[j]<0) { if ( (pierw[i][0]<pierw[j][2] && doc[i][2]>doc[j][0]) || ( pierw[i][2]<pierw[j][0] && doc[i][0]>doc[j][2])) { if ((doc[i][3]-doc[i][1])+(doc[j][3]-doc[j][1])>w) {x=false; break;} } } if (wektor[i]>0 && wektor[j]>0) { if ( (pierw[i][2]<=pierw[j][0] && doc[i][2]>doc[j][0]) || ( pierw[i][0]>=pierw[j][2] && doc[i][0]<doc[j][2])) { if ((doc[i][3]-doc[i][1])+(doc[j][3]-doc[j][1])>w) {x=false; break;} } } if (wektor[i]<0 && wektor[j]>0) { if ( (pierw[i][2]<pierw[j][0] && doc[i][0]>doc[j][2]) || ( pierw[i][0]<pierw[j][2] && doc[i][2]>doc[j][0])) { if ((doc[i][3]-doc[i][1])+(doc[j][3]-doc[j][1])>w) {x=false; break;} } } if (wektor[i]<0 && wektor[j]<0) { if ( (pierw[i][0]<=pierw[j][2] && doc[i][0]>doc[j][2]) || ( pierw[i][2]>=pierw[j][0] && doc[i][2]<doc[j][0])) { if ((doc[i][3]-doc[i][1])+(doc[j][3]-doc[j][1])>w) {x=false; break;} } } if (wektor[i]==0 && wektor[j]!=0) { if ( doc[i][2]>doc[j][0] && pierw[j][0]>=pierw[i][2] && wektor[j]<0) { if ((doc[i][3]-doc[i][1])+(doc[j][3]-doc[j][1])>w) {x=false; break;} } if ( doc[i][0]<doc[j][2] && pierw[j][2]<=pierw[i][0] && wektor[j]>0) { if (((doc[i][3]-doc[i][1])+(doc[j][3]-doc[j][1]))>w) {x=false; break;} } } } } if ( x==true ) cout<<"TAK"<<endl; else cout<<"NIE"<<endl; } return 0; } |