DOJ logoDOJ
問題
最近追加された問題保存した問題Workbooks
カテゴリDLCコンテストグループチーム掲示板
ランキング
正解数ランキングストリークランキングDOJ Powerランキング
提出状況
問題募集ログイン新規登録
DOJ logoDOJ

OI形式のサブタスク採点、Eloレーティング、Discord認証を備えたオンラインジャッジです。

問題
問題一覧カテゴリ
コミュニティ
コンテストランキング掲示板お知らせ外部のコンテストを開催するガイド
アカウント
ログイン新規登録ジャッジ状態
ポリシー
利用規約DLCの利用規則プライバシーAPI 文書言語ランタイムコンテストの順位報酬レーティングとパフォーマンス
© 2026 DOJ
All rights reserved
解説

직사각형 1

問題に戻る

解説

직사각형 영역의 행 범위를 x1x_1x1​부터 x2x_2x2​까지, 열 범위를 y1y_1y1​부터 y2y_2y2​까지 골랐다고 하자.

이때 가중치 합은 다음과 같다.

∑i=x1x2∑j=y1y2AiBj=(∑i=x1x2Ai)(∑j=y1y2Bj)\sum_{i=x_1}^{x_2}\sum_{j=y_1}^{y_2} A_iB_j = \left(\sum_{i=x_1}^{x_2} A_i\right) \left(\sum_{j=y_1}^{y_2} B_j\right)i=x1​

따라서 문제는 AAA의 연속부분수열 합 하나와 BBB의 연속부분수열 합 하나를 골라 두 값의 곱을 최대로 만드는 문제와 같다.

각 수열에 대해 필요한 값은 연속부분수열 합의 최솟값과 최댓값이다. AAA의 연속부분수열 합의 최솟값과 최댓값을 각각 minA,maxA\mathrm{minA}, \mathrm{maxA}minA,maxA라 하고, BBB에 대해서도 minB,maxB\mathrm{minB}, \mathrm{maxB}minB,maxB라 하자.

정답은 다음 네 값 중 최댓값이다.

minAminB,minAmaxB,maxAminB,maxAmaxB\mathrm{minA}\mathrm{minB},\quad \mathrm{minA}\mathrm{maxB},\quad \mathrm{maxA}\mathrm{minB},\quad \mathrm{maxA}\mathrm{maxB}minAminB,minAmaxB,maxAminB,maxA

연속부분수열은 비어 있을 수 없다는 점에 주의해야 한다.

연속부분수열 합의 최댓값과 최솟값은 카데인 알고리즘으로 각각 O(N)O(N)O(N), O(M)O(M)O(M)에 구할 수 있다. 정답의 절댓값은 최대 4×10184 \times 10^{18}4×1018이므로 6464비트 정수를 사용해야 한다.

전체 시간 복잡도는 O(N+M)O(N+M)O(N+M)이다.

∑
x2​
​
j=y1​∑y2​​
Ai​
Bj​
=
(i=x1​∑x2​​Ai​)(j=y1​∑y2​​Bj​
maxB
64
)