[C10_NA_DHV_23] Giải mã

Xem dạng PDF

Gửi bài giải

Điểm: 1,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Pascal, Python

Cho một dãy ~n~ số nguyên dương ~a = (a_1, a_2, ..., a_n)~, sau đó thực hiện tuần tự các bước sau đây để mã hóa dữ liệu:

  1. Cắt dãy ~a~ thành các dãy con liên tiếp, rời nhau.
  2. Với mỗi dãy con, độ dài của dãy con được chèn thêm ngay phía sau hoặc phía trước dãy con đó.

Sau khi thực hiện hai bước trên, một dãy ~b~ sẽ được tạo ra. Dãy ~b~ chính là kết quả sau khi mã hóa dãy ~a~. Ví dụ, cho dãy ~a = (2, 8, 3)~. Giả sử dãy a được cắt thành ~2~ dãy con gồm ~(2)~ và ~(8, 3)~, khi đó các dãy ~b~ có thể được tạo ra là: ~b = (1, 2, 8, 3, 2),\ b = (1, 2, 2, 8, 3),\ b = (2, 1, 8, 3, 2),\ b = (2, 1, 2, 8, 3)~.

Yêu cầu

Cho dãy ~b~, hãy kiểm tra xem có tồn tại hay không dãy ~a~ có thể mã hóa thành dãy ~b~ theo cách như trên?

Dữ liệu đầu vào

Gồm ~2 \times k + 1~ dòng:

  • Dòng 1 chứa một số nguyên dương ~k~ là số bộ dữ liệu ~(1 \le k \le 10^3)~;
  • Trong ~2 \times k~ dòng tiếp theo, mỗi cặp dòng biểu diễn một bộ dữ liệu, trong đó:
    • Dòng thứ nhất chứa một số nguyên dương ~m~ ~(2 \le m \le 10^5)~;
    • Dòng thứ hai chứa ~m~ số nguyên dương ~b_i~ ~(1 \le b_i \le 10^9)~, trong đó hai số liên tiếp cách nhau bởi ít nhất một dấu cách trống.

Dữ liệu đầu ra

Gồm nhiều dòng theo thứ tự tương ứng với các bộ dữ liệu, trong đó ghi YES nếu bộ dữ liệu tồn tại dãy ~a~ và ghi NO nếu bộ dữ liệu không tồn tại dãy ~a~.

Ví dụ

Ví dụ 1
INPUT
2
6
7 9 2 2 7 3
4
7 2 9 2
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.