Salta, salta, salta, pequeño Andrés
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