DOJ logoDOJ
题目
最近添加的题目收藏的题目
分类DLC比赛小组团队讨论区
排名
解题数量排行榜连续解题排名DOJ Power 排行榜
评测状态
征题登录注册
DOJ logoDOJ

支持 OI 子任务计分、Elo 等级分和 Discord 认证的社区在线评测系统。

题目
题目列表分类
社区
比赛排名讨论区公告举办外部比赛指南
账号
登录注册评测状态
政策
服务条款DLC 使用规则隐私政策API 文档语言运行环境比赛排名奖励评级与表现
© 2026 DOJ
保留所有权利
题解

Farewell

返回题目

题解

처음에 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