Palindrome Queries.


Submit solution

Points: 100 (partial)
Time limit: 2.0s
Memory limit: 512M

Author:
Problem type
Allowed languages
Ada, Assembly, Awk, Brain****, C, C#, C++, COBOL, D, Dart, F#, Forth, Fortran, Go, Groovy, Haskell, Java, JS, Kotlin, Lisp, Lua, ObjC, OCaml, Pascal, Perl, PHP, Pike, Prolog, Python, Racket, Ruby, Rust, Scala, Scheme, Sed, Swift, TCL, Text, Turing, VB, Zig

Se le proporciona una cadena que consta de n caracteres entre la a y la z. Las posiciones de la cadena están indexadas como 1,2,\dots,n.

Su tarea consiste en procesar m operaciones de los siguientes tipos:

  1. Cambiar el carácter en la posición k a x
  2. Comprobar si la subcadena de la posición a a la b es un palíndromo

Entrada

La primera línea de entrada contiene dos enteros n y m: la longitud de la cadena y el número de operaciones. La siguiente línea contiene una cadena que consta de n caracteres. Finalmente, hay m líneas que describen las operaciones. Cada línea tiene la forma "1 k x" o "2 a b".

Salida

Para cada operación 2, escriba "YES" si la subcadena es un palíndromo y "NO" en caso contrario.

Restricciones

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

Ejemplo de Entrada

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

Ejemplo de Salida

YES
NO
YES

Comments

There are no comments at the moment.