LQDOJ CUP 2022 - Final Round - XMAS

Xem PDF




Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C++, Clang, Clang++, Cobol, D, Groovy, Haskell, Java, JS, Lua, Node JS, ObjectiveC, Output, Prolog, Pypy 3, Scala
Điểm: 100 (p) Thời gian: 1.0s Bộ nhớ: 512M Input: XMAS.inp Output: XMAS.out

Phần lớn cuộc đời Nam dành để đi thiện nguyện giúp đỡ các em nhỏ có hoàn cảnh khó khăn. Vào dịp Giáng sinh năm 2022, lúc này râu tóc đã bạc phơ, Nam mua bộ đồ đỏ và mũ len đỏ, hóa thân thành ông già Noel lái xe bán tải đi phát quà cho các bạn nhỏ khắp vùng Hội An.

Sáng ngày 29-12-2022, ông già Nam ghé qua trường FPT để giao lưu với các thí sinh xuất sắc nhất trong kỳ thi LQDOJ CUP 2022. Ông già Nam sẽ đưa ra các câu hỏi, bạn nào trả lời đúng sẽ được nhận quà.

Nam chuẩn bị một số nguyên dương \(k\), và một dãy \(A\) gồm \(n\) số nguyên, phần tử thứ \(i\) có giá trị là \(A_{i}\) \((1 \leq i \leq n)\). Nam sẽ đưa ra \(q\) câu hỏi, với mỗi câu hỏi ông chọn ra một đoạn trong dãy \(A\) từ thứ \(l\) tới thứ \(r\) và gán vào dãy \(B\) mới. Tiếp theo ông gọi một bạn trả lời câu hỏi liệu có thể xoá toàn bộ \(r - l + 1\) phần tử của dãy \(B\) này theo quy tắc sau:

  • Được thực hiện nhiều lần xoá, mỗi lần chỉ được phép xoá hai phần tử liên tiếp trong dãy \(B\) có tổng giá trị bằng \(k\).
  • Sau mỗi lần xoá, các phần tử trong dãy \(B\) được dồn lại thành dãy \(B\) mới và tiếp tục các lần xoá tiếp theo trên dãy \(B\).
  • Quá trình xoá kết thúc khi dãy \(B\) rỗng hoặc không thể xoá được nữa.

Ví dụ, với dãy \(B = \{1, 2, 1, 2\}\)\(k = 3\), lần 1 có thể xoá \(B_{2}, B_{3}\) do tổng bằng \(3\), dãy \(B\) dồn lại trở thành \(B = \{1, 2\}\); lần 2 xoá nốt \(B_{1}, B_{2}\) do tổng bằng \(3\), dãy \(B\) trở thành rỗng.

Yêu cầu: Với mỗi câu trong \(q\) câu hỏi, bạn hãy trả lời YES hoặc NO tương ứng với việc có thể xoá được toàn bộ đoạn được chọn ra của câu hỏi đó hay không.

Input

  • Dòng đầu tiên chứa 2 số nguyên \(n, k\) \((1 \leq n \leq 5 \times 10^{5}, 1 \leq k \leq 10^{9})\).
  • Dòng thứ hai chứa \(n\) số nguyên \(A_{1}, A_{2}, \ldots, A_{n}\) \((0 \leq A_{i} \leq 10^{9}, \forall i)\).
  • Dòng thứ ba chứa duy nhất một số nguyên \(q\) \((1 \leq q \leq 10^{6})\)
  • Dòng thứ \(i\) trong số \(q\) dòng cuối cùng chứa hai số \(l_{i}, r_{i}\) là vị trí đoạn được chọn ra trong dãy \(A\) \((1 \leq l_{i} \leq r_{i} \leq n, \forall i)\).

Output

  • Ghi ra \(q\) dòng, dòng thứ \(i\) ghi ra YES hoặc NO cho biết đáp án của câu hỏi thứ \(i\).

Scoring

  • Subtask \(1\) (\(30\%\) số điểm): \(n \leq 100\).
  • Subtask \(2\) (\(30\%\) số điểm): \(n \leq 5 \times 10^{5}, q \leq 10\).
  • Subtask \(3\) (\(40\%\) số điểm): Không có ràng buộc gì thêm.

Example

Test 1

Input
8 3
3 1 2 1 2 4 0 3
5
2 3
2 5
1 7
7 8
1 8
Output
YES
YES
NO
YES
NO
Note

Ở truy vấn \(1\), vì \(a_{2} + a_{3} = 1 + 2 = 3 = k\), nên có thể xoá 2 phần tử này.

Ở truy vấn \(2\), có hai cách xoá như sau: \(((2, 3), (4, 5))\) hoặc \((2, (3, 4), 5)\).

Ở truy vấn \(4\), cũng giống truy vấn \(1\), ta có \(a_{7} + a_{8} = 3 = k\), nên có thể xoá hai phần tử này.


Bình luận

Không có bình luận nào.