Official

A - Area Sum Editorial by maroonrk_admin


部分長方形の縦横の長さ \(h,w\) (\(1 \leq h \leq N, 1 \leq w \leq M\)) を一つ固定してみます.

すると,この部分長方形内部の値の総和は,部分長方形の左上の値から簡単に計算できるとわかります. 具体的には,左上の値が \(v\) だった場合,総和は \((2v+(h-1) \times M+w-1) \times h \times w/2\) になります. よって,目標となる総和から,\(v\) の値を逆算できます. あとは実際に \(v\) を左上とするサイズ \(h,w\) の長方形が取れるかどうか確認すればよいです.

\(h,w\) のペアを全て試すことで,この問題は \(O(NM)\) 時間で解けます.

解答例(C++)

posted:
last update: