Antes de enunciar el próximo desafío, les recuerdo que todavía nadie posteó una solución en el foro al Desafío Ryckeboer #4: “Indiana”
Desafío Ryckeboer #5: “Sereja y Comandos”
Enunciado
Sereja tiene un arreglo A que consiste de n enteros. Inicialmente, todos los elementos del arreglo tienen el valor 0 (cero).
Sereja escribió m comandos en una hoja de papel. Estos comandos se enumeran de 1 a m, y pueden ser de dos tipos:
- Tipo 1: Dados l y r (1 \leq l \leq r \leq n): Incrementar en una unidad todos los elementos del arreglo cuyos índices están entre l y r (inclusive).
- Tipo 2: Dados l y r (1 \leq l \leq r \leq m) Ejecutar todos los comandos cuyos índices están entre l y r (inclusive). En este caso, está garantizado que el valor de r es estrictamente menor que el índice del comando actual en la enumeración de los comandos que escribió Sereja en la hoja de papel.
¿Puedes ayudar a Sereja a ejecutar todos los comandos que escribió en la hoja de papel?
Entrada
La primera línea de la entrada contiene un entero T que denota la cantidad total de casos a resolver. A continuación, viene la descripción de los T casos.
La primera línea de cada caso contiene dos enteros, n y m.
Las siguientes m líneas contienen los comandos que escribió Sereja en la hoja de papel, de la forma: t,l,r cumpliendo las condiciones descritas en el enunciado. En particular en la i-ésima de las siguientes m líneas (con 1 \leq i \leq m):
- t \in \{1,2\} (según el Tipo de comando)
- 1 \leq l \leq r \leq n, (si t = 1)
- 1 \leq l \leq r < i \leq m (si t = 2)
Cotas
- 1 \leq T \leq 3
Subtarea 1:
- 1 \leq n \leq 10
- 1 \leq m \leq 10
Subtarea 2:
- 1 \leq n \leq 10^3
- 1 \leq m \leq 10^3
Subtarea 3:
- 1 \leq n \leq 10^5
- 1 \leq m \leq 10^5
Salida
Para cada caso se te pide que escribas una línea con el arreglo A resultante luego de ejecutar todas las acciones descritas por los comandos de la lista de Sereja. Los números de cada arreglo deben estar separados por espacios. Como los números pueden ser grandes, se te pide que cada número del arreglo lo escribas módulo 10^9+7 (Es decir, si el número final es x, debemos imprimir el resto al dividir a x por 10^9+7)
Link
En el siguiente link pueden crearse un usuario y realizar sus envíos del problema para resolver cualquiera de las subtareas. (También vienen un par de instancias de ejemplo)
Link al problema original (CodeChef)
Problema similar (más fácil)
Como comentó IvoP más abajo, puede ser aconsejable pensar y resolver primero este otro problema.
Pista (SPOILER)
Bueno, no sé si arruina tanto al problema la pista que voy a dar como para poner SPOIOLER, pero al menos quema el tema.