Salta, salta, salta, pequeño Andrés

Tiempo límite 2 s
Memoria límite 256 MB
Casos de prueba 25
Dificultad Fácil Algoritmos
Mostrar (2) MatemáticasTeoría de números
Enviar solución

Puntos: 5

Tipos de problema
Lenguajes permitidos
C, C++, Java, Python, Rust

Autores: Martín Andrighetti, Vicente Opazo, Gabriel Carmona

Tiempo límite: 2 segundos

Memoria límite: 256 megabytes

Andrés siempre fue fanático de trepar cosas: árboles, torres de agua, cualquier estructura que pareciera un desafío. Con el tiempo descubrió su verdadera pasión: el parkour. Saltar entre edificios lo hacía sentir invencible… hasta que un mal salto lo venció, dejándolo con la rodilla destrozada.

El doctor le ofreció un tratamiento experimental: una rodilla ajustable. Con ella, Andrés puede elegir un número entero positivo \(k\), y a partir de ese momento sólo puede realizar saltos con una altura que sea múltiplo de \(k\).

Para probar su rodilla, Andrés viaja a Salamanca, donde hay \(n\) edificios en fila, cada uno con altura \(A_{i}\). La normativa local exige que todos tengan alturas distintas. Andrés planea entrenar durante \(q\) días. En el día \(d\), él quiere saber si puede moverse desde un edificio \(l_{d}\) hasta un edificio \(r_{d}\) (avanzando siempre a edificios adyacentes), usando su rodilla ajustada al valor \(k_{d}\). Como a Andrés le gustan los desafíos extremos, cada día elige un valor de \(k_{d}\) estrictamente mayor que el del día anterior.

Formalmente, Andrés se encuentra en el edificio \(l_{d}\) y quiere llegar al edificio \(r_{d}\). Puede moverse de un edificio \(i\) al edificio adyacente \(j\) (\(|i-j| = 1\)) si y sólo si \(|A_{i}-A_{j}|\) es divisible por \(k_{d}\).

Tu tarea es responder, para cada consulta, si Andrés puede lograr su objetivo.

Entrada

La primera línea contiene dos enteros \(n\) y \(q\) (\(1 \le n, q\le 10^{5}\)).

La segunda línea contiene \(n\) enteros distintos \(A_{1}, A_{2}, \ldots , A_{n}\) (\(1 \le A_{i}\le 10^{5}\)), las alturas de los edificios. Se garantiza que \(A_{i}\ne A_{j}\) si \(i\ne j\).

Cada una de las siguientes \(q\) líneas contiene tres enteros \(l_{d}, r_{d}, k_{d}\) (\(1 \le l_{d}, r_{d}\le n\), \(1 \le k_{d}\le 10^{5}\)), repre3 sentando la consulta del día \(d\) consulta. Se garantiza que \(k_{1} < k_{2} < \ldots < k_{q}\).

Salida

Para cada consulta, imprimir “SI” si Andrés puede moverse desde \(l\) hasta \(r\) siguiendo las reglas, o “NO” en caso contrario.

Ejemplos

Entrada 1

5 3
2 7 4 10 3
1 5 1
1 5 2
2 4 3
5 1 5

Salida 1

SI
NO
SI
NO

Nota

Para el caso de ejemplo:

  • Día 1 (\(d= 1\)): siempre es posible, porque cualquier diferencia es divisible por 1.

  • Día 2 (\(d= 2\)): no es posible, porque \(|2 -7| = 5\) no es divisible por 2.

  • Día 3 (\(d= 3\)): sí es posible, porque \(|7 -4| = 3\) y \(|4 -10| = 6\) son divisibles por 3.

  • Día 4 (\(d= 4\)): no es posible, porque \(|3 -10| = 7\) no es divisible por 5.


Comentarios

No hay comentarios por el momento.