DOJ logoDOJ
Problems
Recently added problemsSaved problems
CategoriesDLCContestsGroupsTeamsBoard
Ranking
Solved Problem RankingStreak rankingDOJ Power ranking
Status
Call for TasksLoginRegister
DOJ logoDOJ

Community online judge with OI-style subtask scoring, Elo ratings, and Discord-backed certification.

Problems
ProblemsCategories
Community
ContestsRankingBoardNoticesHost an external contestGuide
Account
LoginRegisterJudge Status
Policy
Terms of ServiceDLC RulesPrivacyAPI documentationLanguage runtimesContest rank rewardsRating and performance
© 2026 DOJ
All rights reserved
Editorial

직사각형 2

Back to problem

Editorial

행 구간의 길이를 rrr, 그 구간의 AAA 원소 합을 aaa라고 하자. 열 구간의 길이를 ccc, 그 구간의 BBB 원소 합을 bbb라고 하자.

이 직사각형의 가중치 합은 다음과 같다.

∑i=x1x2∑j=y1y2(Ai+Bj)=ca+rb\sum_{i=x_1}^{x_2}\sum_{j=y_1}^{y_2}(A_i+B_j)=ca+rbi=x1​∑x

따라서 각 길이에 대해 가능한 최대 구간 합만 중요하다. XrX_rXr​를 AAA에서 길이가 정확히 rrr인 연속부분수열 합의 최댓값이라 하고, YcY_cYc를 에서 길이가 정확히 인 연속부분수열 합의 최댓값이라고 하자. 정답은 다음 값이다.

max⁡1≤r≤N,  1≤c≤M(cXr+rYc)\max_{1 \le r \le N,\;1 \le c \le M}(cX_r+rY_c)1≤r≤N,1≤c≤Mmax​(cXr​

점 (r,Xr)(r,X_r)(r,Xr​)들의 위쪽 볼록 껍질과 점 (c,Yc)(c,Y_c)(c,Yc​)들의 위쪽 볼록 껍질만 남기면 된다. 어떤 점이 위쪽 볼록 껍질 아래에 있으면, 모든 선형 목적식 에 대해 그 점은 최적이 될 수 없기 때문이다.

수열 AAA에 대해 임의의 실수 λ\lambdaλ가 주어졌을 때

max⁡r(Xr+λr)\max_r(X_r+\lambda r)rmax​(Xr​+λr)

은 각 원소에 λ\lambdaλ를 더한 수열의 최대 연속부분수열 합과 같다. 따라서 카데인 알고리즘으로 위쪽 볼록 껍질의 한 접점을 구할 수 있다. 이 접점 질의를 이용해 볼록 껍질을 재귀적으로 복원할 수 있다.

두 수열의 볼록 껍질을 모두 구한 뒤에는 한쪽 껍질의 각 점에 대해 다른 쪽 껍질에서 선형 함수의 최댓값을 이분 탐색하거나, 각도 순서로 보며 회전하는 캘리퍼스를 사용하면 된다.

정답의 절댓값은 646464비트 정수 범위 안에 들어간다.

시간 복잡도는 구현 방식에 따라 O((N+M)log⁡2(N+M))O((N+M)\log^2(N+M))O((N+M)log2(N+M)) 또는 그와 비슷한 수준이다.

2
​
​
j=y1​∑y2​​
(
Ai​
+
Bj​)=
ca+
rb
​
BBB
ccc
+
rYc​)
cx+dycx+dy
cx+dy