QOJ.ac

QOJ

Time Limit: 6 s Memory Limit: 64 MB Total points: 100

#23686. Centro comercial

Statistics

En Zagreb, la capital de Croacia, se ha decidido construir un gran centro comercial en las afueras coincidiendo con la celebración de la IOI 2007. El terreno candidato para la construcción del centro comercial está dividido en una cuadrícula de $m$ bloques horizontalmente por $n$ bloques verticalmente, como se muestra en la figura siguiente.

Ejemplo de terreno candidato ($m = 10$, $n = 7$)

La ciudad de Zagreb ha decidido elegir una región rectangular de $a$ bloques horizontalmente por $b$ bloques verticalmente dentro del terreno candidato y construir allí el centro comercial. Sin embargo, algunos bloques dentro del terreno candidato ya están habitados por personas y no se puede construir el centro comercial en esas tierras. Si dentro de una región rectangular de $a$ bloques horizontalmente por $b$ bloques verticalmente no hay ningún bloque habitado, se puede construir el centro comercial comprando todos los bloques dentro de esa región rectangular.

Por razones financieras de la ciudad de Zagreb, el costo necesario para la adquisición de terrenos debe reducirse lo máximo posible. Para elaborar un plan presupuestario, es necesario calcular con urgencia el costo requerido para la adquisición de terrenos con el fin de construir el centro comercial. Por ello, la ciudad de Zagreb ha decidido pedirte a ti, candidato a representante en la IOI 2007, que escribas un programa para este propósito.

Escribe un programa que, dados como entrada el tamaño del terreno candidato, el tamaño del centro comercial y, para cada bloque, la información sobre si vive gente allí y, en caso de que no viva nadie, el costo necesario para comprar dicho bloque, halle el costo mínimo requerido para la adquisición de terrenos con el fin de construir el centro comercial.

En lo que sigue, el bloque situado en la $i$-ésima columna desde la izquierda y la $j$-ésima fila desde arriba del terreno candidato se denota por $(i, j)$.

Entrada

La primera línea del archivo de entrada mall.in contiene dos enteros $m, n$ ($1 \le m, n \le 1000$) separados por un espacio. Esto indica que el tamaño del terreno candidato es de $m$ bloques horizontalmente por $n$ bloques verticalmente.

La segunda línea contiene dos enteros $a, b$ ($1 \le a, b \le 1000$) separados por un espacio. Esto indica que el tamaño del centro comercial es de $a$ bloques horizontalmente por $b$ bloques verticalmente.

Las siguientes $n$ líneas (desde la línea $3$ hasta la línea $n + 2$) contienen la información de cada bloque dentro del terreno candidato. La línea $j + 2$ ($1 \le j \le n$) representa la información de los bloques en la $j$-ésima fila desde arriba y contiene $m$ enteros $c_{1,j}, \dots, c_{m,j}$ ($-1 \le c_{i,j} \le 100$) separados por espacios. Cuando $c_{i,j} = -1$, indica que vive gente en el bloque $(i, j)$. En caso contrario, indica que el costo necesario para comprar el bloque $(i, j)$ es $c_{i,j}$.

Ten en cuenta que, para los datos de entrada utilizados en la calificación, la construcción del centro comercial siempre es posible.

Salida

La salida debe escribirse en la salida estándar. Imprime el costo mínimo necesario para la adquisición de terrenos con el fin de construir el centro comercial.

Ejemplo

Entrada 1

7 6
3 2
26 29 84 15 -1 1 71
45 14 38 91 62 77 35
68 -1 -1 90 63 56 70
31 2 4 74 72 41 90
100 26 21 -1 44 72 60
71 4 40 93 48 -1 50

Salida 1

184

El terreno de construcción del centro comercial en este ejemplo de entrada y salida se ilustra a continuación. Un bloque marcado con $\times$ significa que ya vive gente allí.

Nota

Presta atención al tamaño de los datos de entrada. En particular, dado que iostream de C++ es lento, se recomienda utilizar fscanf o funciones similares según sea necesario.

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.