DOJ logoDOJ
問題
最近追加された問題保存した問題
カテゴリDLCコンテストグループチーム掲示板
ランキング
正解数ランキングストリークランキングDOJ Powerランキング
提出状況
問題募集ログイン新規登録
DOJ logoDOJ

OI形式のサブタスク採点、Eloレーティング、Discord認証を備えたオンラインジャッジです。

問題
問題一覧カテゴリ
コミュニティ
コンテストランキング掲示板お知らせ外部のコンテストを開催するガイド
アカウント
ログイン新規登録ジャッジ状態
ポリシー
利用規約DLCの利用規則プライバシーAPI 文書言語ランタイムコンテストの順位報酬レーティングとパフォーマンス
© 2026 DOJ
All rights reserved
解説

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