Advertisement
joylintp

OnMyWay

Jan 28th, 2022
868
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. //{
  5. //#pragma gcc optimize("Ofast,unroll-loops")
  6. //#pragma gcc target("sse,sse2,sse3,ssse3,sse4,avx,avx2,fma,abm,mmx,popcnt,tune=native")
  7. //#define int long long
  8. //#define double long double
  9. #define MP make_pair
  10. #define F first
  11. #define S second
  12. #define MOD 1000000007
  13. //}
  14.  
  15. int N, M;
  16.  
  17. bool cmp(pair<pair<int, int>, int> a, pair<pair<int, int>, int> b)
  18. {
  19.     pair<int, int> A = a.F, B = b.F;
  20.     int Ad = -1, Bd = -1;
  21.     if (A.F == 1)
  22.         Ad = 0;
  23.     else if (A.S == M)
  24.         Ad = 1;
  25.     else if (A.F == N)
  26.         Ad = 2;
  27.     else
  28.         Ad = 3;
  29.     if (B.F == 1)
  30.         Bd = 0;
  31.     else if (B.S == M)
  32.         Bd = 1;
  33.     else if (B.F == N)
  34.         Bd = 2;
  35.     else
  36.         Bd = 3;
  37.  
  38.     if (Ad != Bd)
  39.         return Ad < Bd;
  40.     else if (Ad == 0)
  41.         return A.S < B.S;
  42.     else if (Ad == 1)
  43.         return A.F < B.F;
  44.     else if (Ad == 2)
  45.         return A.S > B.S;
  46.     else
  47.         return A.F > B.F;
  48. }
  49.  
  50. signed main()
  51. {
  52.     ios_base::sync_with_stdio(false);
  53.     cin.tie(0);
  54.  
  55.     int T;
  56.     cin >> T;
  57.     while (T--)
  58.     {
  59.         pair<int, int> A[2], B[2];
  60.         cin >> N >> M;
  61.         cin >> A[0].F >> A[0].S >> A[1].F >> A[1].S;
  62.         cin >> B[0].F >> B[0].S >> B[1].F >> B[1].S;
  63.  
  64.         if (max(A[0].F, A[1].F) < min(B[0].F, B[1].F) || max(B[0].F, B[1].F) < min(A[0].F, A[1].F))
  65.             cout << "Yes\n";
  66.         else if (max(A[0].S, A[1].S) < min(B[0].S, B[1].S) || max(B[0].S, B[1].S) < min(A[0].S, A[1].S))
  67.             cout << "Yes\n";
  68.         else if (N == 1 || M == 1)
  69.             cout << "No\n";
  70.         else
  71.         {
  72.             int Ae = 0, Be = 0;
  73.             if (A[0].F == 1 || A[0].F == N || A[0].S == 1 || A[0].S == M)
  74.                 Ae++;
  75.             if (A[1].F == 1 || A[1].F == N || A[1].S == 1 || A[1].S == M)
  76.                 Ae++;
  77.             if (B[0].F == 1 || B[0].F == N || B[0].S == 1 || B[0].S == M)
  78.                 Be++;
  79.             if (B[1].F == 1 || B[1].F == N || B[1].S == 1 || B[1].S == M)
  80.                 Be++;
  81.  
  82.             if (A[0].F > A[1].F)
  83.                 swap(A[0], A[1]);
  84.             if (B[0].F > B[1].F)
  85.                 swap(B[0], B[1]);
  86.  
  87.             if (Ae + Be < 3)
  88.                 if (A[1] == MP(A[0].F + 1, A[0].S + 1) && B[0] == MP(A[0].F, A[0].S + 1) && B[1] == MP(A[0].F + 1, A[0].S))
  89.                     cout << "No\n";
  90.                 else if (A[1] == MP(A[0].F + 1, A[0].S - 1) && B[0] == MP(A[0].F, A[0].S - 1) && B[1] == MP(A[0].F + 1, A[0].S))
  91.                     cout << "No\n";
  92.                 else
  93.                     cout << "Yes\n";
  94.             else if (Ae + Be == 3)
  95.             {
  96.                 if (Be == 2)
  97.                     swap(A[0], B[0]), swap(A[1], B[1]);
  98.  
  99.                 if (A[0] == MP(1, 2) && A[1] == MP(2, 1) && (B[0] == MP(1, 1) || B[1] == MP(1, 1)))
  100.                     cout << "No\n";
  101.                 else if (A[0] == MP(N - 1, 1) && A[1] == MP(N, 2) && (B[0] == MP(N, 1) || B[1] == MP(N, 1)))
  102.                     cout << "No\n";
  103.                 else if (A[0] == MP(1, M - 1) && A[1] == MP(2, M) && (B[0] == MP(1, M) || B[1] == MP(1, M)))
  104.                     cout << "No\n";
  105.                 else if (A[0] == MP(N - 1, M) && A[1] == MP(N, M - 1) && (B[0] == MP(N, M) || B[1] == MP(N, M)))
  106.                     cout << "No\n";
  107.                 else
  108.                     cout << "Yes\n";
  109.             }
  110.             else
  111.             {
  112.                 vector<pair<pair<int, int>, int>> v;
  113.                 v.push_back(MP(A[0], 0)), v.push_back(MP(A[1], 0));
  114.                 v.push_back(MP(B[0], 1)), v.push_back(MP(B[1], 1));
  115.                 sort(v.begin(), v.end(), cmp);
  116.  
  117.                 if (v[0].S == 0 && v[1].S == 1 && v[2].S == 0 && v[3].S == 1)
  118.                     cout << "No\n";
  119.                 else if (v[0].S == 1 && v[1].S == 0 && v[2].S == 1 && v[3].S == 0)
  120.                     cout << "No\n";
  121.                 else
  122.                     cout << "Yes\n";
  123.             }
  124.         }
  125.     }
  126.  
  127.     return 0;
  128. }
  129.  
  130. //      *****  *****  *   *  *      *****  *   *  *****  *****
  131. //        *   *   *  *   *  *        *    **  *    *    *   *
  132. //       *   *   *  *****  *        *    * * *    *    *****
  133. //   *  *   *   *    *    *        *    *  **    *    *
  134. //  ****   *****    *    *****  *****  *   *    *    *
  135.  
  136. //     *   *   ***   *   *  **
  137. //    *   *  *   *  *   *  **
  138. //   * * *  *****  *****  **
  139. //  * * *  *   *  *   *
  140. //  * *   *   *  *   *  **
  141.  
Advertisement
Advertisement
Advertisement
RAW Paste Data Copied
Advertisement