#728. Xâu đối xứng (PALINY)

Bộ nhớ: 512 MiB Thời gian: 1000 ms Nhập/xuất từ luồng chuẩn
Kiểu bài: Thông thường Kiểu chấm: So sánh văn bản
Đưa lên bởi: Trùm CUỐI

Đề bài

Một xâu được gọi là xâu đối xứng (palindrome) nếu đọc từ trái sang phải cũng giống như đọc từ phải sang trái. Cho một xâu S , bạn cần trả lời một số truy vấn. Mỗi truy vấn yêu cầu kiểm tra xem một xâu con của S có phải là xâu đối xứng hay không.

Dữ liệu:

  • Dòng đầu tiên chứa xâu S .
  • Dòng thứ hai chứa số nguyên M là số lượng truy vấn.
  • M dòng tiếp theo, mỗi dòng chứa hai số nguyên i j , là vị trí bắt đầu và kết thúc của xâu con cần kiểm tra (chỉ số tính từ 1).

Kết quả: Với mỗi truy vấn, in ra "YES" nếu xâu con là đối xứng, ngược lại in ra "NO".

Ví dụ:

Dữ liệu:

abacaba
3
1 7
2 5
1 3

Kết quả:

YES
NO
YES

Giải thích:

  • S[1..7] là "abacaba", là xâu đối xứng.
  • S[2..5] là "baca", không phải xâu đối xứng.
  • S[1..3] là "aba", là xâu đối xứng.

Giới hạn: Độ dài S không quá 2000. 1 \le M \le 10^5 . 1 \le i \le j \le |S| .