VM 11 Bài 06 - Mã khóa bí mật 3

Xem dạng PDF

Gửi bài giải


Điểm: 0,50 (OI)
Giới hạn thời gian: 0.38s
Giới hạn bộ nhớ: 512M
Input: stdin
Output: stdout

Nguồn bài:
VM11 - Tác giả: Nguyễn Thành Trung
Dạng bài
Ngôn ngữ cho phép
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

Hè đã về!! ConanKudo đã tự hứa sẽ làm một việc gì đó có ích trong hè này, và bây giờ là lúc anh bắt đầu.

ConanKudo đi thuyền tới một hòn đảo giấu vàng. Sau nhiều ngày tìm kiếm, anh phát hiện ra một chiếc hòm đã bị khóa. Hiển nhiên ConanKudo không thể phá khóa vì hệ thống kích nổ sẽ hoạt động, và cái mà anh nhận được sẽ chỉ là một đống tro. Do đó, việc tìm ra chìa khóa để mở chiếc hòm là rất cần thiết.

Chìa khóa này là một bảng kích thước ~M \times N~ chỉ chứa các số ~0~ hoặc ~1~ ~\left(0 < M,\text{ } N \leq 30\right)~. Các hàng được đánh số từ ~1~ đến ~M~, và các cột được đánh số từ ~1~ đến ~N~. Từ những người đến trước (và thất bại trong việc mở khóa), ConanKudo đã thu thập được ~M + N~ thông tin. Mỗi thông tin tương ứng với một hàng hoặc một cột của bảng, và có ~1~ trong ~2~ dạng:

Dạng 1: ~K_i~ ~A\left(i,1\right)~ ~A\left(i,2\right)~ ~\ldots~ ~A\left(i,K_i\right)~, có ý nghĩa là: Trên hàng ~i~, có ~K_i~ đoạn được tạo bởi "dãy dài nhất các số ~1~ liên tiếp", và độ dài các đoạn lần lượt (từ trái sang phải) là ~A\left(i,2\right)~ ~\ldots~ ~A\left(i,K_i\right)~. ("Dãy dài nhất các số ~1~ liên tiếp" là dãy gồm các số ~1~ liên tiếp và không là một dãy con của dãy các số ~1~ liên tiếp khác).

Dạng 2: ~K_j~ ~B\left(j,1\right)~ ~B\left(j,2\right)~ ~\ldots~ ~B\left(j,K_j\right)~, có ý nghĩa là: Trên cột ~j~, có ~K_j~ đoạn được tạo bởi "dãy dài nhất các số ~1~ liên tiếp", và độ dài các đoạn lần lượt (từ trên xuống dưới) là ~B\left(j,2\right)~ ~\ldots~ ~B\left(j,K_j\right)~.

Có ~M~ thông tin dạng ~1~ tương ứng với ~M~ hàng, và ~N~ thông tin dạng ~2~ tương ứng với ~N~ cột.

Chỉ 10 phút sau khi ConanKudo đưa thông tin về mã khóa, ll931110, với tốc độ code như gió, đã đưa ra được output. Tuy nhiên ll931110 đưa ra không phải chỉ ~1~ đáp án, mà những ~T~ ~\left(T \leq 5\right)~ đáp án khác nhau. Nhiệm vụ của bạn là kiểm tra xem đáp án nào là đáp án đúng (thỏa mãn tất cả ~M + N~ thông tin).

Input

  • Dòng ~1~: ~2~ số nguyên ~M, N~ cách nhau bởi dấu cách.
  • ~M~ dòng tiếp, dòng thứ ~i~ là ~K_i~ ~A(i,1)~ ~A(i,2)~ ... ~A(i,K_i)~ cho biết thông tin ứng với hàng ~i~.
  • ~N~ dòng tiếp, dòng thứ ~j~ là ~K_j~ ~B(j,1)~ ~B(j,2)~ ... ~B(j,K_j)~ cho biết thông tin ứng với cột ~j~.
  • Dòng tiếp theo chứa số ~T~ - số đáp án khác nhau mà ll931110 đưa ra.
  • Tiếp theo là ~T~ nhóm dòng, mỗi nhóm gồm ~M~ dòng, mỗi dòng gồm ~N~ ký tự mô tả kết quả mà ll931110 đưa ra.

Chú ý:

- Các dòng trắng thừa có thể xuất hiện ở bất kỳ vị trí nào trong file.

- Nếu một hàng không có số 1 nào, thì ràng buộc tương ứng sẽ gồm duy nhất 1 số 0.

Output

  • Gồm ~T~ dòng, dòng thứ ~i~ là YES nếu kết quả thứ ~i~ của ll931110 đưa ra thỏa mãn tất cả ~M + N~ thông tin, ngược lại in ra NO.

Sample Input

3 3
1 1
1 1
1 1

1 1
1 1
1 1

2
100
010
001

100
010
000

Sample Output

YES
NO

Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.