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

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

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

Keeping Multiple Positions

問題に戻る

解説

마지막에 남길 수 있는 원소의 원래 번호는 정확히 ⌊N/2⌋+1\lfloor N/2\rfloor+1⌊N/2⌋+1부터 NNN까지이다. 따라서 이 범위의 AiA_iAi​ 중 최댓값을 출력하면 된다.

수열을 읽으며 해당 범위의 최댓값을 구하면 시간 복잡도는 O(N)O(N)O(N), 추가 공간 복잡도는 O(1)O(1)O(1)이다.

증명

지금까지 고른 kkk들의 곱을 qqq라 하자. 처음에는 q=1q=1q=1이고, 남아 있는 원소의 원래 번호는 항상

q,2q,…,⌊Nq⌋qq,2q,\ldots,\left\lfloor\frac{N}{q}\right\rfloor qq,2q
,
…
,
⌊qN​⌋
q

이다. 여기서 kkk의 배수 번째만 남기면 원래 번호가 qkqkqk의 배수인 원소들만 남으므로 이 성질이 유지된다.

원소가 하나만 남으려면 ⌊N/q⌋=1\lfloor N/q\rfloor=1⌊N/q⌋=1, 즉

⌊N2⌋+1≤q≤N\left\lfloor\frac{N}{2}\right\rfloor+1\leq q\leq N⌊2N​⌋+1≤q≤N

이어야 한다. 반대로 이 범위의 번호 iii는 첫 연산에서 k=ik=ik=i를 골라 바로 혼자 남길 수 있다. N=1N=1N=1이면 연산 없이 유일한 원소가 남는다.

따라서 위 범위의 원소들만, 그리고 모두 마지막에 남길 수 있다.