开荒者
题号:NC53200
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 32 M,其他语言64 M
64bit IO Format: %lld

题目描述

题目译自 JOISC 2017 Day1 T1「開拓Cultivation
开荒者要让一片长方形的平原长满草。这个长方形可视为R行C列的正方形网格,底平行于南北方向,高平行于东西方向。我们用(1,1)表示网格的西北角,(R,C)表示网格的东南角。开始时有且只有N个网格内长有野草,其余网格内既没有草也没有草籽。开荒者们可以控制这片平原上的风往东、西、南、北四个方向中的一个方向吹。
每年夏天,草会制造草籽。开荒者们会选定当年夏天的风向。所有草籽会被风扬起,并根据风向移动一格。来年春天,有草籽降落的网格就会有草萌发。假设草不会枯萎。
我们假设不会有草籽从平原外飘进平原内,飘出网格的草籽不会发芽。试求:让这片平原长满草最少需要几年。

输入描述:

第一行有两个整数R,C,用空格分隔。
第二行有一个整数N。
在接下来的N行中,第i行有两个整数S_i,E_i,表示(S_i,E_i)长有野草。

输出描述:

一个整数,表示在理想方案下,这片平原长满草最少需要的年数。
示例1

输入

复制
3 4
3
1 2
1 4
2 3

输出

复制
3

说明

初始状态(0表示有草):

一种最佳方案是三年的风向分别为西、南、南。表格中展示了每个格子在哪一年开始长草。

示例2

输入

复制
4 4
4
1 1
1 4
4 1
4 4

输出

复制
4

备注:

对于所有数据,
CC-BY-SA,感谢LOJ分享,译文来自 https://loj.ac/problem/2390