Teléfonos móviles


Submit solution

Points: 100
Time limit: 2.0s
Memory limit: 256M

Problem type
Allowed languages
Ada, BrainF***, C#, C++, Dart, Go, Java, JS, Kotlin, Lua, Pascal, Prolog, Python, Swift, VB

Supongamos que las estaciones base de teléfonos móviles de cuarta generación en el área de Tampere funcionan de la siguiente manera. El área se divide en cuadrados. Los cuadrados forman una matriz S × S con las filas y columnas numeradas de 0 a S-1. Cada cuadrado contiene una estación base. El número de teléfonos móviles activos dentro de un cuadrado puede cambiar porque un teléfono se mueve de un cuadrado a otro o un teléfono está encendido o apagado. A veces, cada estación base informa el cambio en el número de teléfonos activos a la estación base principal junto con la fila y la columna de la matriz.

Tarea

Escriba un programa, que reciba estos informes y responda a las consultas sobre el número total actual de teléfonos móviles activos en cualquier área en forma de rectángulo.

Entrada

La entrada se lee de la entrada estándar como enteros y las respuestas a las consultas se escriben en la salida estándar como enteros. La entrada se codifica de la siguiente manera. Cada entrada viene en una línea separada y consta de un entero de instrucción y un número de enteros de parámetros de acuerdo con la siguiente tabla.

Parámetros de Instrucción Significado

0 S "Inicialice el tamaño de la matriz a S × S que contiene todos los ceros. Esta instrucción se da solo una vez y será la primera instrucción".

1 X Y A "Agregue A al número de teléfonos activos en la tabla cuadrada (X, Y). A puede ser positivo o negativo".

2 L B R T "Consulte la suma actual de números de teléfonos móviles activos en casillas (X, Y), donde \(L \le X \le R, B \le Y \le T"\)

3 "Terminar el programa. Esta instrucción se da solo una vez y será la última instrucción".

Los valores siempre estarán dentro del rango, por lo que no es necesario verificarlos. En particular, si A es negativo, se puede suponer que no reducirá el valor cuadrado por debajo de cero.

La indexación comienza en 0, por ejemplo. para una tabla de tamaño 4 × 4, tenemos 0 \le X \le 3 y 0 \le Y \le 3.

Su programa no debe responder nada a las líneas con una instrucción que no sea 2. Si la instrucción es 2, entonces se espera que su programa responda a la consulta escribiendo el responda como una sola línea que contiene un solo entero a la salida estándar.

INSTRUCCIONES DE PROGRAMACION

En los ejemplos a continuación, el último entero es el último que se lee desde una línea, y respuesta es la variable entera que contiene tu respuesta.

Si programa en C++ y usa iostreams, debe usar lo siguiente implementación para la lectura de entrada estándar y escritura a salida estándar: cin >> last; cout << answer << endl << flush;

Si programa en C o C++ y usa scanf e printf, debe usar lo siguiente implementación para la lectura de entrada estándar y escritura a salida estándar: scanf ("%d", &last); printf ("%d\n", answer); fflush (stdout);

Si programa en Pascal, debe usar la siguiente implementación de lectura Entrada estándar y escritura a salida estándar: Read (last); ... Readln; Writeln (answer);

Salida

Su programa no debe responder nada a las líneas con una instrucción que no sea 2. Si la instrucción es 2, se espera que su programa responda a la consulta escribiendo la respuesta como una sola línea que contenga un único entero en la salida estándar.

Ejemplo de entrada Salida Explicacion

0 4                             Inicialice el tamaño de la tabla a 4 × 4.
1 1 2 3                         Actualizar la tabla en (1,2) con +3.
2 0 0 2 2                       Suma de la consulta del rectángulo 0 ≤ X ≤ 2, 0 ≤ Y ≤ 2.
                    3           Responde a la consulta.
1 1 1 2                         Actualizar la tabla en (1, 1) con +2.
1 1 2 -1                        Actualizar la tabla en (1, 2) con -1.
2 1 1 2 3                       Suma de la consulta del rectángulo 1 ≤ X ≤ 2, 1 ≤ Y ≤ 3.
                    4           Responde a la consulta. 
3                               Termina el programa

Ejemplo de Entrada

0 4
1 1 2 3
2 0 0 2 2
1 1 1 2
1 1 2 -1
2 1 1 2 3
3

Ejemplo de salida

3
4

Restricciones

Tamaño de la mesa: \(S × S. 1 × 1 \le S × S \le 1024 × 1024\)

Valor de celda V en cualquier momento: \(0 \le V \le 2^15 –1 (= 32767)\)

Cantidad de actualización \(A: -2^15 \le A \le 2^15 –1 (= 32767)\)

No de instrucciones U en entrada: 3 \le U \le 60002

Número máximo de teléfonos M en toda la tabla: M = 2^30


Comments

There are no comments at the moment.