A la moda

Tiempo límite 3 s
Memoria límite 256 MB
Casos de prueba 64
Dificultad Medio Algoritmos
Mostrar (3) GreedyMatemáticasOrdenamiento
Enviar solución

Puntos: 10

Tipos de problema
Lenguajes permitidos
C, C++, Java, Python, Rust

Autor: Vicente Opazo

Tiempo límite: 3 segundos

Memoria límite: 256 megabytes

A Valentina le encanta estar a la moda. Para armar sus atuendos dispone de \(N\) tipos de prendas (por ejemplo: camisas, pantalones, zapatos, etc.). Para cada tipo de prenda \(i\), existen \(A_{i}\) opciones distintas que ella puede elegir.

Un día Valentina ganó el primer premio de una rifa: la posibilidad de obtener \(K\) prendas adicionales, pudiendo escoger libremente de qué tipo serán. Con estas prendas extra, Valentina busca maximizar la cantidad total de atuendos distintos que podrá formar.

Un atuendo se compone de exactamente una prenda de cada tipo, y por lo tanto el número de atuendos posibles es el producto de las cantidades disponibles de cada tipo de prenda. Valentina quiere elegir de qué tipos serán sus \(K\) prendas adicionales para que este producto sea lo más grande posible.

Como el número puede ser muy grande, se pide calcular el resultado módulo \(10^{9} + 7\).

Entrada

La primera línea contiene dos enteros \(1 \le N\le 10^{6}\) y \(0 \le K\le 10^{9}\), el número de tipos de prendas y la cantidad de prendas adicionales que Valentina puede obtener.

La segunda línea contiene \(N\) enteros \(1 \le A_{1}, A_{2}, \ldots , A_{N}\le 10^{9}\), donde \(A_{i}\) representa cuántas opciones de la \(i\)-ésima prenda existen inicialmente.

Salida

Imprimir un único entero: la cantidad máxima de atuendos distintos que Valentina puede formar, módulo \(10^{9} + 7\).

Ejemplos

Entrada 1

3 2
2 3 1

Salida 1

18

Entrada 2

4 0
5 2 3 2

Salida 2

60

Nota

  • Para el primer caso de prueba el producto inicial es \(2 \cdot 3 \cdot 1 = 6\). Valentina podría sumar sus dos prendas extra al segundo tipo (que tenía 3 opciones), de tal forma de conseguir \(2 \cdot 5 \cdot 1 = 10\) combinaciones. Sin embargo, una mejor estrategía sería sumar una prenda extra al primer tipo y otra prenda extra al tercer tipo, de tal forma de conseguir \(3 \cdot 3 \cdot 2 = 18\) combinaciones. Se puede demostrar que no se puede conseguir un resultado mejor.
  • En el segundo caso de prueba no puede sumar ninguna prenda extra, así que el resultado es simplemente \(5 \cdot 2 \cdot 3 \cdot 2 = 60\)

Comentarios

No hay comentarios por el momento.