Robo de libros


Submit solution

Points: 100 (partial)
Time limit: 5.0s
Memory limit: 512M

Author:
Problem type
Allowed languages
C++

Durante su visita a la Feria Internacional del Libro en La Habana, PSN0 se encontró con una serie de intrigantes rumores. Se decía que una antigua familia de libreros de Las Tunas poseía una valiosa colección de libros raros y manuscritos antiguos, almacenados en una bóveda secreta bajo el mar Caribe. Recordando sus días como un astuto ladrón de libros, decidió que sería un desafío interesante intentar acceder a esta bóveda.

Para llevar a cabo su plan, decidió utilizar su submarino personalizado. Sin embargo, hay un detalle crucial: su submarino necesita una cantidad específica de flotabilidad L para poder escapar de la escena del crimen sin problemas. Él no quiere que su submarino se estrelle contra el lecho marino o flote a la superficie, donde podría ser fácilmente detectado por la policía.

Para planificar su robo, necesita conocer la flotabilidad de los libros en la bóveda. Pero, gracias a sus habilidades de espionaje, logró obtener información relevante. Ahora sabe cuántos libros A_l con una determinada flotabilidad l se encuentran en la bóveda.

Tu tarea es escribir un programa que utilice esta información para calcular el número máximo de libros que puede robar PSN0 de tal manera que su flotabilidad total (obtenida sumando la flotabilidad individual de cada libro robado) sea exactamente L, o determine que esto es imposible.

Subtareas

Para todas las subtareas 1 \le M \le 300, -10^{18} \le L \le 10^{18}, 0 \le A_l \le 10^{12}

  • Subtarea 1 (5 puntos): M, A_l \le 50.
  • Subtarea 2 (15 puntos): M, A_l \le 100.
  • Subtarea 3 (20 puntos): M \le 30.
  • Subtarea 4 (20 puntos): M \le 50.
  • Subtarea 5 (20 puntos): M \le 100.
  • Subtarea 6 (20 puntos): Sin restricciones adicionales.

Entrada

La primera línea de la entrada contiene dos enteros M y L: que significa que el nivel de flotabilidad de cada libro está entre -M y M y la cantidad necesaria de flotabilidad.

La siguiente línea contiene 2M+1 enteros A_{-M}, \dots, A_M donde A_l describe la cantidad de libros con flotabilidad l que hay en la bóveda.

Salida

Imprime una sola línea, que debe contener el máximo número de libros que puede robar PSN0 de tal manera que su flotabilidad total sea exactamente L, o "impossible" si no hay forma de lograrlo.

Ejemplos

Entrada 1
2 5
2 3 1 1 4
Salida 1
9

Puede robar un libro cada una con flotabilidad -2, 0 y 1 respectivamente, dos libros con flotabilidad -1 y cuatro libros con flotabilidad 2. Esto da como resultado un total de 1 + 1 + 1 + 2 + 4 = 9 libros robados con una flotabilidad total de \(1 ⋅ (-2) + 1 ⋅ 0 + 1 ⋅ 1 + 2 ⋅ (-1) + 4 ⋅ 2 = 5\).

Entrada 2

3 5
3 1 0 2 0 0 2
Salida 2
impossible
Entrada 3
1 5
0 0 6
Salida 3
5

Comments

There are no comments at the moment.