你要在自己财力许可的范围内寻找一个尽可能大的地方,以便兴建一个新的金字塔。为帮助你作出决定,为你提供了土地测绘图。为方便起见,该地块被划分为由M乘N个小正方形构成的网格。金字塔的地基部份必须是正方形,而且各边要与这些方格平行。
测绘图中标出了P个有可能重叠的障碍物,这些障碍物是上述网格上的长方形,其各边与方格平行。为了建造金字塔,任何塔基所占方格中的障碍物必须被移走。移除障碍物i需要付出成本Ci。当移除一个障碍物时,需要将障碍物整个地移除,即不能只移除障碍物的一部份。同时,移除一个障碍物对与其重叠的其他障碍物无任何影响。
任务
已知测绘图中M和N的大小,对P个障碍物的描述,移走每个障碍物的成本以及你的预算B。编写程序,找出在移走障碍物总成本不超过B的前提下金字塔地基的最大边长。
限制及评分
程序用三组不相交的数据进行评测。以下限制适用于所有的测试数据:
1 <= M, N <= 1,000,000 网格的尺寸。
1 <= Ci <= 7,000 移除障碍物i的成本。
对每个障碍物i均有 1 <= Xi1 <= Xi2 <= M 并且 1 <= Yi1 <= Yi2<= N。
第一组测试总分值35分:
B = 0 可以付出的最大成本。(不可移除任何障碍物)
1<= P <= 1,000 网格中障碍物的数目。
第二组测试总分值35分:
0 < B <= 2,000,000,000 你的预算。
1<= P <= 30,000 网格中障碍物的数目。
第三组测试值30分:
B = 0 你的预算。(不可以移除任何障碍物)
1<= P <= 400,000 网格中障碍物的数目。