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

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

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

퇴장 인사

문제로 돌아가기

해설

처음에 iii번째였던 원소를 마지막까지 남긴다고 하자. 그 원소의 왼쪽에서는 i−1i-1i−1개가 삭제되고, 오른쪽에서는 N−iN-iN−i개가 삭제된다. 따라서 마지막 값은 삭제 순서와 관계없이

Ai−(i−1)+(N−i)=Ai+N+1−2iA_i-(i-1)+(N-i)=A_i+N+1-2iAi​−(i−1)+(N−i)=Ai​+

이다.

모든 위치 iii에 대해 이 값을 계산하고 최댓값을 구한다. 원소를 입력받을 때 바로 계산하여 현재까지의 최댓값만 저장하면 된다. 한 케이스의 시간 복잡도는 O(N)O(N)O(N), 추가 공간 복잡도는 O(1)O(1)O(1)이다.

증명

하나의 원소를 끝까지 남기는 동안 다른 원소들과의 상대적인 순서는 변하지 않는다. 처음에 그 원소의 왼쪽에 있던 원소는 삭제될 때 그 값을 111 감소시키고, 오른쪽에 있던 원소는 삭제될 때 그 값을 111 증가시킨다. 나머지 원소는 각각 정확히 한 번 삭제되므로, 처음 iii번째였던 원소의 최종 값은 항상 Ai+N+1−2iA_i+N+1-2iAi​+이다.

서브태스크 111에서는 현재 수열에서 삭제할 원소를 모두 시도하는 완전탐색으로 가능한 마지막 값을 조사할 수 있다. 수열을 직접 변경한 뒤 재귀 호출에서 돌아올 때 원래대로 복구하면 시간 복잡도는 O(N!)O(N!)O(N!), 수열과 재귀 호출에 필요한 공간 복잡도는 O(N)O(N)O(N)이다.

서브태스크 222에서는 마지막에 남길 원소를 하나씩 정하고, 다른 각 원소가 삭제될 때의 변화량을 하나씩 더한다. 시간 복잡도는 O(N2)O(N^2)이며, 수열을 저장하므로 공간 복잡도는 이다.

N
+
1−
2i
N+
1−
2i

어떤 삭제 순서를 선택하더라도 마지막 원소는 처음 수열의 어느 위치에서 온 원소이므로, 최종 값은 위 식들의 최댓값을 넘을 수 없다. 반대로 이 식이 최대인 위치를 하나 고르고 그 원소를 제외한 모든 원소를 삭제하면 해당 값을 얻는다. 따라서 위 식의 최댓값이 정답이다.

O
(
N2
)
O(N)O(N)O(N)

서브태스크 333에서는 Ai≥Ai+1A_i \geq A_{i+1}Ai​≥Ai+1​이므로 Ai+N+1−2iA_i+N+1-2iAi​+N+1−2i는 위치가 한 칸 오른쪽으로 이동할 때마다 적어도 222 감소한다. 따라서 첫 번째 원소를 남기는 것이 최적이며, 답은 A1+N−1A_1+N-1A1​+N−1이다. 입력을 읽는 시간까지 포함한 시간 복잡도는 O(N)O(N)O(N), 추가 공간 복잡도는 O(1)O(1)O(1)이다.

Solution written by GPT6