Comiendo setas P14827


Statement
 

pdf   zip

Alicia y Benito tienen nn setas en común, y se las quieren comer todas en orden: primero la seta 1, luego la 2, … Cada seta será comida enteramente por Alicia o por Benito. Se sabe que comer la seta ii-ésima provocaría satisfacción AiA_i a Alicia, y satisfacción BiB_i a Benito. Son buenos amigos, por lo que han decidido maximizar la suma de las satisfacciones de ambos, sin importar cuántas setas comerá cada uno.

Sin embargo, existe un problema. Como las setas tienen un gusto fuerte, si cualquiera de ellos se come la seta jj cuando la última seta que se había comido era la ii, se deberá restar un cierto valor T[i][j]T[i][j] a la satisfacción total obtenida.

¿Podéis calcular la máxima satisfacción total posible, si se decide quién se come cada seta de forma óptima?

Entrada

La entrada consiste en diversos casos, y sólo contiene números enteros no negativos. Cada caso empieza con cinco números nn, cc, dd, ee y pp. Siguen A1,...,AnA_1, ..., A_n y B1,...,BnB_1, ..., B_n. Asumid n1n \ge 1, que cc, dd y ee son menores que pp, p1000p \le 1000, y que todas las AiA_i y las BiB_i están entre 0 y 1000.

Los valores cc, dd, ee y pp se dan para definir la matriz T[1..n][1..n]T[1..n][1..n] de forma implícita, de la forma siguiente: $$\begin{equation*} T[i][j] = \left\{ \begin{tabular}{lr} $c$, & si $i = 1$ y $j = 1$; \\ $(d \cdot T[i][j-1] + e) \bmod p$, & si $j > 1$; \\ $(d \cdot T[i-1][n] + e) \bmod p$, & \quad si $i > 1$ y $j = 1$. \end{tabular}\right. \end{equation*}$$ Esta definición de la matriz TT no tiene ningún truco, simplemente sirve para que la entrada sea relativamente pequeña y rápida de leer.

Salida

Para cada caso, escribid la máxima satisfacción posible.

Puntuación

  • test-1:   Casos con n1000n \le 1000 y donde TT sólo tiene ceros, como el Ejemplo 1.

  • test-2:   Casos con n10n \le 10, como el Ejemplo 2.

  • test-3:   Casos con n100n \le 100.

  • test-4:   Casos con n1000n \le 1000.

Public test cases
  • Input

    8 0 87 0 907
    85 184 954 399 786 592 614 345 
    464 886 516 368 424 620 51 15 
    
    1 0 2 0 7
    42 23
    

    Output

    5068
    42
    
  • Input

    10 98 69 139 149
    497 710 164 512 602 316 669 9 569 541
    242 112 420 445 426 221 147 81 922 813
    
    2 460 275 366 487
    933 878
    87 105
    
    3 100 17 403 997
    1 2 3
    4 5 6
    

    Output

    5093
    1565
    -97
    
  • Information
    Author
    Alex Alvarez
    Language
    Spanish
    Official solutions
    C++
    User solutions