DOJ logoDOJ
문제
최근 추가된 문제들저장한 문제문제집
카테고리DLC대회그룹팀게시판
랭킹
문제 풀이 랭킹스트릭 랭킹DOJ Power 랭킹
현황
문제 제안로그인회원가입
DOJ logoDOJ

OI 서브태스크 채점, Elo 레이팅, Discord 인증을 갖춘 커뮤니티 온라인 저지.

문제
문제 목록카테고리
커뮤니티
대회랭킹게시판공지사항외부 대회 개최이용 안내
계정
로그인회원가입채점 현황
정책
이용약관DLC 이용 규칙개인정보 처리방침API 사용 설명서언어별 채점 환경대회 순위 보상레이팅과 퍼포먼스
© 2026 DOJ
모든 권리 보유
해설

오렌지!

문제로 돌아가기

해설

서브태스크 1: 첫 번째 사람이 구매하는 오렌지의 집합을 모두 열거한다. 크기가 KKK인 집합마다 만족도를 직접 계산하여 최댓값을 구한다. 시간 복잡도는 O(N2N)O(N2^N)O(N2N), 공간 복잡도는 O(N)O(N)O(N)이다.

전체 풀이: 모든 오렌지를 두 번째 사람이 구매한다고 생각하면 만족도는 ∑i=1Nbi\sum_{i=1}^N b_i∑i=1N​bi​이다. iii번째 오렌지를 첫 번째 사람에게 넘길 때 만족도는 ai만큼 변한다.

ci=ai−bic_i=a_i-b_ici​=ai​−bi​로 두면, 정확히 개의 를 골라 합을 최대화하면 된다. 내림차순으로 정렬한 뒤 가장 큰 개를 고른다. 선택한 값보다 큰 값을 선택하지 않았다면 두 값을 교환하여 합을 늘릴 수 있으므로, 이 선택은 최적이다. 같은 값들의 선택 순서는 상관없다.

정렬한 값을 c1≥c2≥⋯≥cNc_1\geq c_2\geq\cdots\geq c_Nc1​≥c2​≥⋯≥c이라 하면 정답은 다음과 같다.

∑i=1Nbi+∑i=1Kci\sum_{i=1}^N b_i+\sum_{i=1}^K c_ii=1∑N​bi​+

정확히 KKK개를 골라야 하므로 선택하는 차이가 음수여도 건너뛰면 안 된다.

케이스당 시간 복잡도는 O(Nlog⁡N)O(N\log N)O(NlogN), 공간 복잡도는 O(N)O(N)O(N)이다. 정답과 계산 중의 합의 절댓값은 2×10142\times10^{14}2×1014 이하이며, 차이의 절댓값은 이하이다. 합은 64비트 정수로 저장한다.

Solution written by GPT

−bia_i-b_i
ai​−bi​
KK
K
cic_ici​
KKK
N
​
i=1
∑
K
​
ci​
109−110^9-1109−1