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$ หมายความว่ามีผู้คนอาศัยอยู่แล้ว

หมายเหตุ

โปรดระวังขนาดของข้อมูลนำเข้า โดยเฉพาะอย่างยิ่ง iostream ของภาษา C++ นั้นทำงานช้า จึงขอแนะนำให้ใช้ 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.