Cặp số thân thiện

Xem PDF




Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 1900 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: AND.INP Output: AND.OUT

Cho dãy số \(a_1, a_2, \ldots, a_n\). Ta gọi hai vị trí \(i\)\(j\) (với \(1 \leq i < j \leq n\)) là hai vị trí ``thân thiện'' với nhau khi và chỉ khi tồn tại một dãy số nguyên \((p_1, p_2, \ldots, p_k)\) sao cho \(i = p_1 < p_2 < \ldots < p_k = j\)\(a_{p_t}\ \&\ a_{p_{t+1}} > 0\) với mọi \(1 \leq t < k\). Ở đây \(\&\) thể hiện phép toán and trên các số nhị phân.

Bạn cần trả lời \(q\) câu hỏi. Trong mỗi câu hỏi, bạn có hai số \(x\), \(y\) và cần cho biết hai vị trí \(x\)\(y\) trong dãy số có ``thân thiện'' với nhau hay không.

Nhắc lại, phép toán \(\&\) (and) đối với bit được định nghĩa như sau:

  • \(0\ \&\ 0 = 0\),
  • \(1\ \&\ 0 = 0\),
  • \(0\ \&\ 1 = 0\),
  • \(1\ \&\ 1 = 1\).

Phép toán \(\&\) đối với các số có nhiều hơn một bit được thực hiện theo từng bit. Ví dụ:

  • \(2\ \&\ 3 = 2\) \((10_2\ \&\ 11_2 = 10_2)\),
  • \(2\ \&\ 5 = 0\) \((010_2\ \&\ 101_2 = 000_2)\),
  • \(5\ \&\ 5 = 5\) \((101_2\ \&\ 101_2 = 101_2)\).

Input

  • Dòng đầu tiên chứa hai số nguyên \(n\)\(q\) \((1 \leq n - 1, q \leq 3 \cdot 10^5)\) lần lượt là độ dài của dãy số được cho và số câu hỏi bạn cần trả lời.
  • Dòng thứ hai chứa \(n\) số nguyên \(a_1, a_2, \ldots, a_n\) \((0 \leq a_i \leq 10^9)\) thể hiện dãy số được cho.
  • Trong \(q\) dòng cuối cùng, mỗi dòng chứa hai số nguyên \(x\)\(y\) \((1 \leq x < y \leq n)\) thể hiện một câu hỏi.

Output

  • Với mỗi câu hỏi, in ra \(\texttt{Yes}\) nếu hai vị trí \(x\)\(y\) "thân thiện" với nhau, \(\texttt{No}\) nếu ngược lại.

Scoring

  • Subtask \(1\) (\(20\) điểm): \(n \leq 300\)\(q \leq 300\)
  • Subtask \(2\) (\(20\) điểm): \(n \leq 3000\)\(q \leq 3000\)
  • Subtask \(3\) (\(16\) điểm): Với mọi \(i\), ta có \(a_i = 2^{k_i}\)\(k_i \in \mathbb{Z}\).
  • Subtask \(4\) (\(44\) điểm): Không có ràng buộc gì thêm.

Example

Test 1

Input
7 1
2 2 7 1 9 9 7
2 5
Output
Yes
Note

Trong ví dụ trên, hai vị trí \(x = 2\)\(y = 5\) ``thân thiện'' với nhau vì ta có thể chọn \(p_1 = x = 2\), \(p_2 = 3\)\(p_3 = y = 5\). Khi đó, \(a_{p_1}\ \&\ a_{p_2} = 2\ \&\ 7 = 2\)\(a_{p_2}\ \&\ a_{p_3} = 7\ \&\ 9 = 1\).

Bình luận

Mới nhất
Tải bình luận...

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