解説各建物の高さは独立に決められます。したがって、各建物 iii について max(B1,…,BAi)\max(B_1,\ldots,B_{A_i})max(B1,…,BAi) を求め、すべて足せば答えになります。 h=2,3,…,Mh=2,3,\ldots,Mh=2,3,…,M の順に Bh←max(Bh,Bh−1)B_h \gets \max(B_h,B_{h-1})Bh← と更新します。すると、 には元の数列の先頭 個の最大値が保存されます。答えは です。 時間計算量は O(N+M)O(N+M)O(N+M)、空間計算量は O(N+M)O(N+M)O(N+M) です。