CSES - Palindrome Queries | Truy vấn xâu đối xứng

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: 1800 (p) Thời gian: 1.0s Bộ nhớ: 512M Input: bàn phím Output: màn hình

Bạn được cho một xâu bao gồm \(n\) kí tự giữa a - z. Các vị trí của xâu được đánh số \(1, 2, \ldots, n\).

Nhiệm vụ của bạn là xử lý \(m\) thao tác thuộc các loại sau:

  1. Thay đổi kí tự ở vị trí \(k\) thành \(x\).
  2. Kiểm tra xâu con từ vị trí \(a\) đến vị trí \(b\) có phải là xâu đối xứng hay không.

Input

  • Dòng đầu vào đầu tiên có hai số nguyên \(n\) và \(m\): độ dài của xâu và số lượng thao tác.
  • Dòng tiếp theo có một xâu bao gồm \(n\) kí tự.
  • Cuối cùng, có \(m\) dòng mô tả các thao tác. Mỗi dòng có dạng 1 k x hoặc 2 a b.

Constraints

  • \(1 \leq n, m \leq 2 \cdot 10^5\)
  • \(1 \leq k \leq n\)
  • \(1 \leq a \leq b \leq n\)

Output

  • Đối với mỗi thao tác \(2\), in YES nếu xâu con là một xâu đối xứng và NO nếu ngược lại.

Example

Test 1

Input
7 5
aybabtu
2 3 5
1 3 x
2 3 5
1 5 x
2 3 5
Output
YES
NO
YES

Bình luận (5)

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