QOJ.ac

QOJ

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

#23686. 쇼핑몰

Statistics

크로아티아의 수도 자그레브에서는 IOI 2007 개최에 맞추어 교외에 대형 쇼핑몰을 건설하기로 했다. 쇼핑몰의 건설 후보지는 아래 그림과 같이 가로 $m$블록, 세로 $n$블록의 격자 모양으로 나누어져 있다.

건설 후보지의 예 ($m = 10$, $n = 7$)

자그레브 시에서는 건설 후보지 중에서 가로 $a$블록, 세로 $b$블록인 직사각형 영역을 골라 그곳에 쇼핑몰을 건설하기로 했다. 하지만 건설 후보지 내의 몇몇 블록에는 이미 사람이 살고 있어서 그 땅에는 쇼핑몰을 건설할 수 없다. 만약 가로 $a$블록, 세로 $b$블록인 직사각형 영역 안에 사람이 살고 있는 블록이 없다면, 그 직사각형 영역 안의 블록을 모두 매수함으로써 쇼핑몰을 건설할 수 있다.

자그레브 시의 재정상의 이유로, 부지 매수에 드는 비용은 가능한 한 적게 할 필요가 있다. 예산안을 책정하기 위해 쇼핑몰 건설을 위한 부지 매수에 필요한 비용을 조속히 계산해야 한다. 그래서 자그레브 시에서는 이를 위한 프로그램 작성을 IOI 2007 대표 후보자인 당신에게 의뢰하기로 했다.

입력으로 건설 후보지의 크기와 쇼핑몰의 크기가 주어지고, 또한 각 블록마다 그곳에 사람이 살고 있는지 여부의 정보와 만약 사람이 살고 있지 않다면 그 블록을 매수하는 데 필요한 비용이 주어졌을 때, 쇼핑몰 건설을 위한 부지 매수에 필요한 비용의 최솟값을 구하는 프로그램을 작성하라.

이하에서는 건설 후보지의 왼쪽에서 $i$번째 열, 위에서 $j$번째 행의 블록을 $(i, j)$로 나타낸다.

입력

입력 파일 mall.in의 첫째 줄에는 두 정수 $m, n$ ($1 \le m, n \le 1000$)이 공백으로 구분되어 적혀 있다. 이는 건설 후보지의 크기가 가로 $m$블록, 세로 $n$블록임을 나타낸다.

둘째 줄에는 두 정수 $a, b$ ($1 \le a, b \le 1000$)가 공백으로 구분되어 적혀 있다. 이는 쇼핑몰의 크기가 가로 $a$블록, 세로 $b$블록임을 나타낸다.

이어지는 $n$개의 줄 ($3$번째 줄부터 $n + 2$번째 줄까지)에는 건설 후보지 내의 각 블록의 정보가 적혀 있다. $j + 2$번째 줄 ($1 \le j \le n$)은 위에서 $j$번째 행의 블록 정보를 나타내며, $m$개의 정수 $c_{1,j}, \dots, c_{m,j}$ ($-1 \le c_{i,j} \le 100$)가 공백으로 구분되어 적혀 있다. $c_{i,j} = -1$일 때는 블록 $(i, j)$에 사람이 살고 있음을 나타낸다. 그렇지 않을 때는 블록 $(i, j)$를 매수하는 데 드는 비용이 $c_{i,j}$임을 나타낸다.

또한, 채점에 사용되는 입력 데이터에 대해서는 쇼핑몰 건설이 항상 가능하다.

출력

출력은 표준 출력으로 수행한다. 쇼핑몰 건설을 위한 부지 매수에 필요한 비용의 최솟값을 출력하라.

예제

입력 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

출력 1

184

이 입출력 예제에서의 쇼핑몰 건설지를 그림으로 나타내면 아래와 같다. $\times$ 표시된 블록은 이미 사람이 살고 있음을 의미한다.

주의

입력 데이터의 크기에 주의하라. 특히 C++의 iostream은 느리므로 필요에 따라 fscanf 등을 사용하는 것이 좋다.

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.