198162025-12-24 11:06:23ubormaciPapírrepülőcpp17Accepted 100/1002.595s61236 KiB
#include <iostream>
#include <algorithm> // for sort, mainly
#include <vector>
#include <map>
#include <set>
#include <cmath>
#include <array>
#include <string>
#include <cstdio>
#include <iterator>
#include <unordered_set>
#include <cstdint> // for int64_t, int32_t, etc
#include <queue>
#include <stack>
#include <deque>
#include <numeric> // gcd, lcm
#include <fstream>
#include <bitset> // for bitset
#include <iomanip>
#include <cassert> // for set with custom ordering
#include <type_traits> // for set with custom ordering
#include <utility> // for swap, forward, etc
using namespace std;

// #pragma GCC optimize("O2")
// #pragma GCC optimize("O1","O2","O3","Ofa st","unroll-loops")
// #pragma GCC target("sse","sse2","sse3","sse4.1","sse4.2","avx","avx2","fma")

#pragma GCC optimize("Ofast","unroll-loops")

template<typename A, typename B> ostream& operator<<(ostream &os, const pair<A, B> &p) { return os << '(' << p.first << ", " << p.second << ')'; }
template<typename T_container, typename T = typename enable_if<!is_same<T_container, string>::value, typename T_container::value_type>::type> ostream& operator<<(ostream &os, const T_container &v) { os << '{'; string sep; for (const T &x : v) os << sep << x, sep = ", "; return os << '}'; }
void dbg_out() { cout << endl; }
template<typename Head, typename... Tail> void dbg_out(Head H, Tail... T) { cout << ' ' << H; dbg_out(T...); }
#ifdef LOCAL
#define dbg(...) cout << "(" << #__VA_ARGS__ << "):", dbg_out(__VA_ARGS__)
#else
#define dbg(...)
#endif

/*

notes:

int64_t
stoi(string s) -> string to int
to_string() -> int (or else) to string

vector declaration:
vector<ll> v(n, 0)
vector<vector<ll>> v(n, vector<ll>(n, 0));

{if statement} ? {truth value} : {false value}

#ifdef LOCAL
    freopen("in.txt","r",stdin);
    freopen("out.txt","w",stdout);
#endif

std::lcm(ll a, ll b), std::gcd(int a, int b)

cout << fixed << setprecision(n);

set with custom ordering
set<ll, decltype(&cmp)> qu(cmp);

*/

typedef int32_t ll;

const ll maxspeed = 51;

bool query(ll i, ll j, ll speed, vector<vector<vector<bool>>> & dp) {

	return dp[i][j][speed + maxspeed];

}

void settrue(ll i, ll j, ll speed, vector<vector<vector<bool>>> & dp) {
	dp[i][j][speed + maxspeed] = true;
}

void solve() {
	ll m, n, obs;
	cin >> m >> n >> obs;
	
	vector<vector<bool>> wall(n, vector<bool>(m, false));
	vector<vector<vector<bool>>> dp(n, vector<vector<bool>>(m, vector<bool>(2 * maxspeed + 5, false)));

	vector<ll> wallx(obs, 0);
	vector<ll> wallupy(obs, 0);
	vector<ll> walldowny(obs, 0);

	for(ll i = 0; i < obs; i++) {
		cin >> wallx[i];
	}
	for(ll i = 0; i < obs; i++) {
		cin >> walldowny[i];
	}
	for(ll i = 0; i < obs; i++) {
		cin >> wallupy[i];
	}

	for(ll k = 0; k < obs; k++) {

		//cerr << "\nk=" << k;
		//cerr << "\nwallx=" << wallx[k];
		//cerr << "\nwallup=" << wallupy[k];
		//cerr << "\nwalldown=" << walldowny[k];

		ll j = wallx[k];
		
		for(ll i = n-1; i > wallupy[k]; i--) {
			wall[i][j] = true;
		}

		for(ll i = walldowny[k]-1; i >= 0; i--) {
			wall[i][j] = true;
		}
	}

	/*
	for(ll i = n-1; i >= 0; i--) {
		cerr << "\n" << wall[i];
	}
	*/

	ll starty = n / 2;

	settrue(starty, 0, 0, dp);
	settrue(starty, 0, 1, dp);
	settrue(starty, 0, -1, dp);

	for(ll j = 1; j < m; j++) {

		for(ll i = n - 1; i >= 0; i--) {

			// tehat mostani pozicio [i, j]
			// es meg akarjuk nezni, hogy az elozo oszlopban, milyen poziciokrol
			// milyen sebessegekkel tudunk eljutni a mostanira

			if(wall[i][j]) {
				continue;
			}

			for(ll previ = n - 1; previ >= 0; previ--) {

				if(wall[previ][j-1]) {
					continue;
				}

				if(abs(i - previ) > maxspeed) {
					continue;
				}

				bool there = query(previ, j-1, i - previ, dp);

				if(there) {
					settrue(i, j, i - previ, dp);
				}

			}
			
			vector<bool> herenext(2 * maxspeed + 1, false);

			/*
			cerr << "\nfor pos=" << i << ";" << j << "\npossible to enter with: ";
			for(ll sp = -maxspeed; sp <= maxspeed; sp++) {
				if(query(i, j, sp, dp)) {
					cerr << sp << " ";
				}
			}
			*/

			for(ll sp = -maxspeed; sp <= maxspeed; sp++) {

				ll hereind = sp + maxspeed;

				herenext[hereind] = query(i, j, sp, dp);

				if(sp - 1 >= -maxspeed) {
					herenext[hereind] = herenext[hereind] | query(i, j, sp-1, dp);
				}
				if(sp+1 <= maxspeed) {
					herenext[hereind] = herenext[hereind] | query(i, j, sp+1, dp);
				}
			}

			for(ll sp = -maxspeed; sp <= maxspeed; sp++) {
				if(herenext[sp + maxspeed]) {
					settrue(i, j, sp, dp);
				}
			}
		}
	}

	/*
	for(ll j = 0; j < m; j++) {
		for(ll i = n-1; i >= 0; i--) {

			//cerr << "\nfor pos=" << i << ";" << j << "\npossible to leave with: ";
			for(ll sp = -maxspeed; sp <= maxspeed; sp++) {
				if(query(i, j, sp, dp)) {
					cerr << sp << " ";
				}
			}
		}
	}
	*/

	ll j = m - 1;
	for(ll i = n - 1; i >= 0; i--) {
		
		for(ll sp = -maxspeed; sp <= maxspeed; sp++) {
			if(query(i, j, sp, dp)) {
				cout << "YES\n";
				return;
			}
 		}
	}

	cout << "NO\n";
}

int main()
{
	std::ios_base::sync_with_stdio(false);
	cin.tie(nullptr);
	cout.tie(nullptr);

	ll tests;
	cin >> tests;
	
	for(ll ti = 0; ti < tests; ti++) {
		solve();
	}

	return 0;
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted1ms316 KiB
subtask25/5
2Accepted13ms428 KiB
3Accepted17ms316 KiB
4Accepted50ms484 KiB
5Accepted82ms488 KiB
6Accepted83ms316 KiB
7Accepted158ms316 KiB
8Accepted453ms508 KiB
9Accepted1.2s684 KiB
10Accepted1.197s684 KiB
11Accepted1.189s704 KiB
12Accepted1.169s744 KiB
13Accepted1.138s784 KiB
subtask37/7
14Accepted13ms508 KiB
15Accepted41ms440 KiB
16Accepted314ms564 KiB
17Accepted851ms712 KiB
18Accepted1.231s832 KiB
19Accepted1.238s1556 KiB
20Accepted1.226s3380 KiB
21Accepted1.23s3380 KiB
22Accepted1.238s3300 KiB
23Accepted1.248s3380 KiB
24Accepted1.246s3256 KiB
25Accepted1.254s3716 KiB
26Accepted1.273s3736 KiB
subtask413/13
27Accepted13ms508 KiB
28Accepted41ms440 KiB
29Accepted314ms564 KiB
30Accepted851ms712 KiB
31Accepted1.231s832 KiB
32Accepted1.238s1556 KiB
33Accepted1.226s3380 KiB
34Accepted1.23s3380 KiB
35Accepted1.238s3300 KiB
36Accepted1.248s3380 KiB
37Accepted1.246s3256 KiB
38Accepted1.254s3716 KiB
39Accepted1.273s3736 KiB
40Accepted13ms508 KiB
41Accepted39ms508 KiB
42Accepted319ms564 KiB
43Accepted816ms732 KiB
44Accepted1.228s832 KiB
45Accepted1.24s1396 KiB
46Accepted1.243s3636 KiB
47Accepted1.21s3652 KiB
48Accepted1.213s3052 KiB
49Accepted1.261s3704 KiB
50Accepted1.23s3528 KiB
51Accepted1.274s3892 KiB
52Accepted1.217s3636 KiB
subtask519/19
53Accepted13ms428 KiB
54Accepted17ms316 KiB
55Accepted50ms484 KiB
56Accepted82ms488 KiB
57Accepted83ms316 KiB
58Accepted158ms316 KiB
59Accepted453ms508 KiB
60Accepted1.2s684 KiB
61Accepted1.197s684 KiB
62Accepted1.189s704 KiB
63Accepted1.169s744 KiB
64Accepted1.138s784 KiB
65Accepted13ms508 KiB
66Accepted41ms440 KiB
67Accepted314ms564 KiB
68Accepted851ms712 KiB
69Accepted1.231s832 KiB
70Accepted1.238s1556 KiB
71Accepted1.226s3380 KiB
72Accepted1.23s3380 KiB
73Accepted1.238s3300 KiB
74Accepted1.248s3380 KiB
75Accepted1.246s3256 KiB
76Accepted1.254s3716 KiB
77Accepted1.273s3736 KiB
78Accepted13ms508 KiB
79Accepted39ms508 KiB
80Accepted319ms564 KiB
81Accepted816ms732 KiB
82Accepted1.228s832 KiB
83Accepted1.24s1396 KiB
84Accepted1.243s3636 KiB
85Accepted1.21s3652 KiB
86Accepted1.213s3052 KiB
87Accepted1.261s3704 KiB
88Accepted1.23s3528 KiB
89Accepted1.274s3892 KiB
90Accepted1.217s3636 KiB
91Accepted13ms508 KiB
92Accepted41ms316 KiB
93Accepted300ms524 KiB
94Accepted834ms564 KiB
95Accepted1.148s828 KiB
96Accepted1.156s1332 KiB
97Accepted1.24s3892 KiB
98Accepted1.197s3356 KiB
99Accepted1.151s3336 KiB
100Accepted1.041s3860 KiB
101Accepted1.197s3632 KiB
102Accepted1.264s3380 KiB
103Accepted871ms3672 KiB
subtask69/9
104Accepted13ms508 KiB
105Accepted41ms440 KiB
106Accepted314ms564 KiB
107Accepted851ms712 KiB
108Accepted1.231s832 KiB
109Accepted1.238s1556 KiB
110Accepted1.226s3380 KiB
111Accepted1.23s3380 KiB
112Accepted1.238s3300 KiB
113Accepted1.248s3380 KiB
114Accepted1.246s3256 KiB
115Accepted1.254s3716 KiB
116Accepted1.273s3736 KiB
117Accepted13ms508 KiB
118Accepted41ms316 KiB
119Accepted312ms564 KiB
120Accepted852ms564 KiB
121Accepted1.319s1052 KiB
122Accepted1.631s5436 KiB
123Accepted2.5s61236 KiB
124Accepted1.896s39988 KiB
125Accepted1.483s35636 KiB
126Accepted2.382s57396 KiB
127Accepted1.71s19264 KiB
128Accepted2.595s45364 KiB
129Accepted1.554s40084 KiB
subtask714/14
130Accepted13ms508 KiB
131Accepted41ms440 KiB
132Accepted314ms564 KiB
133Accepted851ms712 KiB
134Accepted1.231s832 KiB
135Accepted1.238s1556 KiB
136Accepted1.226s3380 KiB
137Accepted1.23s3380 KiB
138Accepted1.238s3300 KiB
139Accepted1.248s3380 KiB
140Accepted1.246s3256 KiB
141Accepted1.254s3716 KiB
142Accepted1.273s3736 KiB
143Accepted13ms508 KiB
144Accepted39ms508 KiB
145Accepted319ms564 KiB
146Accepted816ms732 KiB
147Accepted1.228s832 KiB
148Accepted1.24s1396 KiB
149Accepted1.243s3636 KiB
150Accepted1.21s3652 KiB
151Accepted1.213s3052 KiB
152Accepted1.261s3704 KiB
153Accepted1.23s3528 KiB
154Accepted1.274s3892 KiB
155Accepted1.217s3636 KiB
156Accepted13ms508 KiB
157Accepted41ms316 KiB
158Accepted312ms564 KiB
159Accepted852ms564 KiB
160Accepted1.319s1052 KiB
161Accepted1.631s5436 KiB
162Accepted2.5s61236 KiB
163Accepted1.896s39988 KiB
164Accepted1.483s35636 KiB
165Accepted2.382s57396 KiB
166Accepted1.71s19264 KiB
167Accepted2.595s45364 KiB
168Accepted1.554s40084 KiB
169Accepted12ms316 KiB
170Accepted43ms500 KiB
171Accepted314ms564 KiB
172Accepted894ms564 KiB
173Accepted1.317s1092 KiB
174Accepted1.633s5428 KiB
175Accepted1.503s26796 KiB
176Accepted2.174s30280 KiB
177Accepted1.453s17372 KiB
178Accepted1.725s17464 KiB
179Accepted1.521s17204 KiB
180Accepted2.387s57140 KiB
181Accepted2.403s43060 KiB
subtask833/33
182Accepted2ms500 KiB
183Accepted13ms428 KiB
184Accepted17ms316 KiB
185Accepted50ms484 KiB
186Accepted82ms488 KiB
187Accepted83ms316 KiB
188Accepted158ms316 KiB
189Accepted453ms508 KiB
190Accepted1.2s684 KiB
191Accepted1.197s684 KiB
192Accepted1.189s704 KiB
193Accepted1.169s744 KiB
194Accepted1.138s784 KiB
195Accepted13ms508 KiB
196Accepted41ms440 KiB
197Accepted314ms564 KiB
198Accepted851ms712 KiB
199Accepted1.231s832 KiB
200Accepted1.238s1556 KiB
201Accepted1.226s3380 KiB
202Accepted1.23s3380 KiB
203Accepted1.238s3300 KiB
204Accepted1.248s3380 KiB
205Accepted1.246s3256 KiB
206Accepted1.254s3716 KiB
207Accepted1.273s3736 KiB
208Accepted13ms508 KiB
209Accepted39ms508 KiB
210Accepted319ms564 KiB
211Accepted816ms732 KiB
212Accepted1.228s832 KiB
213Accepted1.24s1396 KiB
214Accepted1.243s3636 KiB
215Accepted1.21s3652 KiB
216Accepted1.213s3052 KiB
217Accepted1.261s3704 KiB
218Accepted1.23s3528 KiB
219Accepted1.274s3892 KiB
220Accepted1.217s3636 KiB
221Accepted13ms508 KiB
222Accepted41ms316 KiB
223Accepted300ms524 KiB
224Accepted834ms564 KiB
225Accepted1.148s828 KiB
226Accepted1.156s1332 KiB
227Accepted1.24s3892 KiB
228Accepted1.197s3356 KiB
229Accepted1.151s3336 KiB
230Accepted1.041s3860 KiB
231Accepted1.197s3632 KiB
232Accepted1.264s3380 KiB
233Accepted871ms3672 KiB
234Accepted13ms508 KiB
235Accepted41ms316 KiB
236Accepted312ms564 KiB
237Accepted852ms564 KiB
238Accepted1.319s1052 KiB
239Accepted1.631s5436 KiB
240Accepted2.5s61236 KiB
241Accepted1.896s39988 KiB
242Accepted1.483s35636 KiB
243Accepted2.382s57396 KiB
244Accepted1.71s19264 KiB
245Accepted2.595s45364 KiB
246Accepted1.554s40084 KiB
247Accepted12ms316 KiB
248Accepted43ms500 KiB
249Accepted314ms564 KiB
250Accepted894ms564 KiB
251Accepted1.317s1092 KiB
252Accepted1.633s5428 KiB
253Accepted1.503s26796 KiB
254Accepted2.174s30280 KiB
255Accepted1.453s17372 KiB
256Accepted1.725s17464 KiB
257Accepted1.521s17204 KiB
258Accepted2.387s57140 KiB
259Accepted2.403s43060 KiB
260Accepted12ms316 KiB
261Accepted41ms448 KiB
262Accepted310ms564 KiB
263Accepted828ms608 KiB
264Accepted1.225s1120 KiB
265Accepted1.34s5172 KiB
266Accepted1.804s29420 KiB
267Accepted1.154s31684 KiB
268Accepted2.007s43572 KiB
269Accepted1.539s33588 KiB
270Accepted2.095s51764 KiB
271Accepted2.463s51828 KiB
272Accepted1.633s37608 KiB