10777. Паліндромні запити


Відправити розв'язок

Бали: 100
Time limit: 1.0s
Memory limit: 500M

Authors:
Problem type
Allowed languages
C++, Java, Pascal, Python

Вам надано рядок, який складається з \(n\) символів між 'a'–'z'. Позиції рядка мають індекси \(1,2,…,n\).

Ваше завдання полягає в тому, щоб обробити \(m\) операцій таких типів:

  • Змінити символ у позиції \(k\) на \(x\)
  • Перевірити, чи підрядок з позиції \(a\) до позиції \(b\) є паліндромом.

Обмеження

  • \(1≤n,m≤2⋅10^5\)
  • \(1≤k≤n\)
  • \(1≤a≤b≤n\)

Формат вхідних даних

Перший рядок містить два цілих числа \(n\) і \(m\): довжину рядка та кількість операцій.

Наступний рядок містить рядок із \(n\) символів.

Нарешті, є \(m\) рядків, які описують операції.

Кожен рядок має вигляд "1 \(k\) \(x\)" або "2 \(a\) \(b\)".

Формат вихідних даних

Для кожної операції 2 виведіть YES, якщо підрядок є паліндромом, і NO в іншому випадку.

Приклад вхідних даних

7 5
aybabtu
2 3 5
1 3 x
2 3 5
1 5 x
2 3 5

Приклад вихідних даних

YES
NO
YES

Коментарі

Ще немає коментарів.