QOJ.ac

QOJ

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

#23686. Centre commercial

Statistics

À Zagreb, la capitale de la Croatie, il a été décidé de construire un grand centre commercial en banlieue à l'occasion de l'organisation de l'IOI 2007. Le site candidat pour la construction du centre commercial est divisé en une grille de $m$ blocs horizontalement sur $n$ blocs verticalement, comme le montre la figure ci-dessous.

Exemple de site candidat ($m = 10$, $n = 7$)

La ville de Zagreb a décidé de choisir une zone rectangulaire de $a$ blocs horizontalement sur $b$ blocs verticalement au sein du site candidat et d'y construire le centre commercial. Cependant, certains blocs du site candidat sont déjà habités et il est impossible de construire le centre commercial sur ces terrains. S'il n'y a aucun bloc habité à l'intérieur d'une zone rectangulaire de $a$ blocs horizontalement sur $b$ blocs verticalement, le centre commercial peut être construit en achetant tous les blocs situés dans cette zone rectangulaire.

Pour des raisons financières propres à la ville de Zagreb, le coût d'acquisition des terrains doit être réduit autant que possible. Afin d'établir un projet de budget, il est urgent de calculer le coût nécessaire à l'acquisition des terrains pour la construction du centre commercial. C'est pourquoi la ville de Zagreb a décidé de vous demander, en tant que candidat pour représenter votre pays à l'IOI 2007, d'écrire un programme à cet effet.

Écrivez un programme qui, étant donné en entrée la taille du site candidat, la taille du centre commercial, ainsi que pour chaque bloc l'information indiquant s'il est habité et, s'il ne l'est pas, le coût nécessaire pour acheter ce bloc, détermine le coût minimal d'acquisition des terrains nécessaire pour construire le centre commercial.

Dans ce qui suit, le bloc situé dans la $i$-ième colonne en partant de la gauche et la $j$-ième ligne en partant du haut du site candidat est noté $(i, j)$.

Entrée

La première ligne du fichier d'entrée mall.in contient deux entiers $m, n$ ($1 \le m, n \le 1000$) séparés par un espace. Cela indique que la taille du site candidat est de $m$ blocs horizontalement sur $n$ blocs verticalement.

La deuxième ligne contient deux entiers $a, b$ ($1 \le a, b \le 1000$) séparés par un espace. Cela indique que la taille du centre commercial est de $a$ blocs horizontalement sur $b$ blocs verticalement.

Les $n$ lignes suivantes (de la ligne $3$ à la ligne $n + 2$) contiennent les informations sur chaque bloc du site candidat. La ligne $j + 2$ ($1 \le j \le n$) représente les informations des blocs de la $j$-ième ligne en partant du haut et contient $m$ entiers $c_{1,j}, \dots, c_{m,j}$ ($-1 \le c_{i,j} \le 100$) séparés par des espaces. Lorsque $c_{i,j} = -1$, cela indique que le bloc $(i, j)$ est habité. Sinon, cela indique que le coût nécessaire pour acheter le bloc $(i, j)$ est $c_{i,j}$.

Notez que pour les données d'entrée utilisées lors de l'évaluation, la construction du centre commercial est toujours possible.

Sortie

La sortie doit être écrite sur la sortie standard. Affichez le coût minimal d'acquisition des terrains nécessaire à la construction du centre commercial.

Exemple

Entrée 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

Sortie 1

184

Le terrain de construction du centre commercial dans cet exemple d'entrée/sortie est illustré ci-dessous. Un bloc marqué d'un $\times$ signifie qu'il est déjà habité.

Remarque

Faites attention à la taille des données d'entrée. En particulier, comme iostream en C++ est lent, il est conseillé d'utiliser fscanf ou des fonctions similaires selon les besoins.

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.