Description:
W*Hのサイズの長方形状の公園がある。(1<= W,H <= 10000)
南西の角の座標を(0,0)とし、北東の角を(W,H)とする。
この公園には、格子点の位置にN本木が生えている。(0 <= N <= 100)
この公園内にクリケットのフィールドを作りたい。
フィールドは正方形状で、フィールドの内側に木が生えていてはいけない(辺上はOK)。
正方形の辺の長さは整数で、各辺は公園のいずれかの辺と水平に取る。
フィールドの1辺の最大の大きさを求めよ。
また、それを成し遂げるフィールドの南西の座標も求めよ。
解が複数ある時は、どれを答えても構わない。
Answer:
答えのフィールドは、木か公園の端にぶつかるまで南西に移動させる事が出来るので、
(木が生えているx座標+座標0)*(木が生えているy座標+座標0) の、101*101点の内に、答えに成り得る座標が必ず存在する。
この候補座標のそれぞれにおいて、取りえる最大の正方形の大きさを計算してやればよい。
計算時間は、O(N^3)。
Source: