Cortar el césped


Submit solution

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

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

Edo gasta la mayoría del tiempo en su reciente jardín. Allí el cultiva, corta, fertiliza y extiende su césped y felizmente ve como este crece.

Él está segando el césped por una regla específica cada pocos días. Por otra parte, el césped crece cada día la misma longitud, pero tiene un límite de H milímetros de altura (en ese punto cada planta consume demasiado alimento y no puede crecer más). Cuando el tiempo para la fertilización llega, Edo tiene que calcular cuál es la cantidad necesaria de abono. La cantidad óptima de abono depende de la cantidad de césped. Precisamente, su jardín puede ser representado como un arreglo unidimensional de exactamente N plantas de césped con altura igual a cero al comienzo. Es necesario escribir un programa que calcule la suma de la altura de todas las plantas del césped en cualquier momento que lo necesite Edo.

Escriba un programa el cual lea y evalúe M operaciones en el jardín de Edo. Cada operación es una de las siguientes:

  • N X: cada planta de césped crece exactamente X milímetros. Si la altura de la planta excede el límite H esta detiene su crecimiento exactamente en la altura H.

  • L X: Edo corta completamente las primeras X plantas de césped desde la izquierda. Después de esta operación la altura de las primeras X plantas es igual a 0.

  • D X: Edo corta completamente las primeras X plantas de césped desde la derecha. Después de esta operación la altura de esas plantas es igual a 0.

  • S X : Edo fija la altura de la chapeadora a X y corta el jardín completo con esta. La altura de cada planta más alta que X es puesta a X mientras la altura de las otras plantas permanece igual.

  • Z : Edo quiere conocer la suma de las alturas de todas las plantas del césped.

Entrada

La primera línea de la entrada contiene tres números entero positivos N, H y M (1 \leq N \leq 10^9, 1 \leq H \leq 10^6, 1 \leq M \leq 10^6) – número de plantas de césped, la máxima altura de las plantas y el número de operaciones. Las próximas M líneas de la entrada contienen la descripción de una operación. Cada operación es una de las cinco operaciones previamente descritas y son hechas de una letra mayúscula y un número entero X (necesario en las operaciones N, L, D, S) separados con un espacio. En las operaciones L y D el número X estará en el intervalo 1 \leq X \leq N, y en el caso de las operaciones N y S el número X estará en el intervalo 1 \leq X \leq H.

Salida

Para cada operación Z es necesario escribir una línea con un entero – la suma de las alturas de todas las plantas del césped. Por supuesto, el orden de las respuestas tiene que ser en el mismo orden que las operaciones Z en la entrada. La suma de las alturas puede ser más grande que 2^{32}.

Ejemplo #1 de Entrada

10 1000 5 
Z 
N 10 
Z 
L 3 
Z

Ejemplo #1 de Salida

0 
100 
70

Ejemplo #2 de Entrada

10 1000 10 
N 10 
L 5 
Z 
N 10 
L 3 
Z 
D 2 
Z 
S 1 
Z

Ejemplo #2 de Salida

50 
120 
80 
5

Ejemplo #3 de Entrada

7 10 10 
N 9 
Z 
N 9 
Z 
N 5 
Z 
S 1 
Z 
N 10 
Z

Ejemplo #3 de Salida

63 
70 
70 
7 
70

Comments


  • 4
    dmesadiaz  commented on Dec. 24, 2019, 9:56 p.m.

    Como se podria aceptar este problema