[IOI2008] Pyramid Base

题目描述

你要在自己财力许可的范围内寻找一个尽可能大的地方,以便兴建一个新的金字塔。为帮助你作出决定,为你提供了土地测绘图。为方便起见,该地块被划分为由$M\times N$个小正方形构成的网格。金字塔的地基部份必须是正方形,而且各边要与这些方格平行。 测绘图中标出了$P$个有可能重叠的障碍物,这些障碍物是上述网格上的长方形,其各边与方格平行。为了建造金字塔,任何塔基所占方格中的障碍物必须被移走。移除障碍物$i$需要付出成本$C_i$。当移除一个障碍物时,需要将障碍物整个地移除,即不能只移除障碍物的一部份。同时,移除一个障碍物对与其重叠的其他障碍物无任何影响。 已知测绘图中$M$和$N$的大小,对$P$个障碍物的描述,移走每个障碍物的成本以及你的预算$B$。编写程序,找出在移走障碍物总成本不超过$B$的前提下金字塔地基的最大边长。

输入输出格式

输入格式


你的程序需要从标准输入上读入以下数据: - 第一行包含两个以单个空格分隔的整数,分别表示$M$及$N$。 - 第二行包含整数$B$,是你可付出的最大成本(即你的预算)。 - 第三行包含整数$P$,是测绘图中标出的障碍物数量。 - 以下$P$行的每一行表示一个障碍物。其中第$i$ 行表示第$i$个障碍物。每一行包含$5$个以单个空格分隔的整数$X_{i1}, Y_{i1}, X_{i2}, Y_{i2}$和$C_i$,分别表示障碍物左下角小正方形的座标,右上角小正方形的座标,以及移除这个障碍物的成本。网格左下角的小正方形座标为$(1,1)$,而其右上角小正方形为$(M, N)$。

输出格式


你的程序必须向标准输出写出一行,该行只含一个整数,即金字塔基可能的最大边长。如果无法建造任何金字塔,程序应输出0。

输入输出样例

输入样例 #1

6 9
42
5
4 1 6 3 12
3 6 5 6 9
1 3 3 8 24
3 8 6 9 21
5 1 6 2 20

输出样例 #1

4

输入样例 #2

13 5
0
8
8 4 10 4 1
4 3 4 4 1
10 2 12 2 2
8 2 8 4 3
2 4 6 4 5
10 3 10 4 8
12 3 12 4 13
2 2 4 2 21

输出样例 #2

3

说明

### 样例说明 样例1: ![](https://cdn.luogu.com.cn/upload/pic/20909.png ) 样例2: ![](https://cdn.luogu.com.cn/upload/pic/20910.png ) ### 数据范围 程序用三组不相交的数据进行评测。以下限制适用于所有的测试数据: $1 \leq M, N \leq 1,000,000$ 网格的尺寸。 $1 \leq Ci \leq 7,000$ 移除障碍物i的成本。 对每个障碍物$i$均有 $1 \leq X_{i1} \leq X_{i2} \leq M$ 并且 $1 \leq Y_{i1} \leq Y_{i2}\leq N$。 第一组测试总分值35分: - $B = 0$ ——可以付出的最大成本。(不可移除任何障碍物) - $1\leq P \leq 1,000$ ——网格中障碍物的数目。 第二组测试总分值35分: - $0 < B \leq 2,000,000,000$ ——你的预算。 - $1\leq P \leq 30,000$ ——网格中障碍物的数目。 第三组测试值30分: - $B = 0$ ——你的预算。(不可以移除任何障碍物) - $1\leq P \leq 400,000$ ——网格中障碍物的数目。