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

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

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

BCD는 난이도 순서에 인버전이 없으면 진행이 안되는가

문제로 돌아가기

해설

PjP_jPj​를 jjj번 문제 앞의 최대 난이도, QjQ_jQj​를 뒤의 최소 난이도라 하자. 앞에 문제가 없으면 Pj=0P_j=0Pj​=0, 뒤에 문제가 없으면 Qj=M+1Q_j=M+1Qj​=M+1로 둔다. 처음 막히는 문제가 jjj번인 피해자 수는

max⁡(0,Aj−max⁡(Pj,Qj))\max\bigl(0,A_j-\max(P_j,Q_j)\bigr)max(0,Aj​−max(Pj​,Q

이다.

이 값을 모든 jjj에 대해 더한다. 오른쪽부터 훑어 QjQ_jQj​를 구한 뒤, 왼쪽부터 PjP_jPj​를 갱신하며 합산한다. 시간과 공간 복잡도는 O(N)이다.

증명

실력이 sss인 참가자는 난이도가 정렬되어 있다면 sss 이하인 문제를 모두 푼다. 따라서 피해자가 될 필요충분조건은 처음 막힌 문제의 뒤에 자신이 풀 수 있는 문제가 남아 있는 것이다.

처음 막히는 문제가 jjj번이라는 조건은 Pj≤s<AjP_j\leq s<A_jPj​≤이고, 뒤에 풀 수 있는 문제가 있다는 조건은 이다. 두 조건을 만족하는 실력의 개수는 이다. 각 피해자에게 처음 막히는 문제는 유일하므로, 합산할 때 중복도 누락도 없다.

j​
)
)
O(N)
O(N)
s<
Aj​
Qj≤sQ_j\leq sQj​≤s
max⁡(0,Aj−max⁡(Pj,Qj))\max(0,A_j-\max(P_j,Q_j))max(0,Aj​−max(Pj​,Qj​))