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
Коментарі