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

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

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

계단 수열 만들기

問題に戻る

解説

원래 수열에서 이웃한 두 원소 Ai,Ai+1A_i, A_{i+1}Ai​,Ai+1​을 생각하자. 두 원소의 순서는 바꿀 수 없으므로, 두 원소 사이만 독립적으로 해결하면 된다.

d=∣Ai−Ai+1∣d=|A_i-A_{i+1}|d=∣Ai​−Ai+1​∣라고 하자.

d=1d=1d=1이면 이미 조건을 만족하므로 삽입이 필요 없다.

d≥2d\ge 2d≥2이면 두 원소 사이에 d−1d-1d−1개의 수를 삽입하면 된다. 예를 들어 222와 666 사이에는 3,4,53,4,53,를 넣으면 되므로 번의 연산이 필요하다.

d=0d=0d=0이면 두 원소가 같다. 이 경우 같은 두 수 사이에 그 수보다 111 크거나 작은 수 하나를 넣으면 된다. 예를 들어 5,55,55,5 사이에 444를 넣으면 5,4,55,4,55,4,가 되고, 모든 이웃한 차이의 절댓값이 이 된다. 따라서 이 경우 필요한 연산 횟수는 이다.

따라서 각 iii에 대해 다음 값을 더하면 된다.

{1(∣Ai−Ai+1∣=0)∣Ai−Ai+1∣−1(∣Ai−Ai+1∣≥1)\begin{cases} 1 & (|A_i-A_{i+1}|=0)\\ |A_i-A_{i+1}|-1 & (|A_i-A_{i+1}|\ge 1) \end{cases}{1∣A

정답은 최대 약 2×10142 \times 10^{14}2×1014까지 커질 수 있으므로 64비트 정수를 사용해야 한다. 시간 복잡도는 O(N)O(N)O(N)이다.

4
,
5
333
5
111
111
i
​
−
Ai+1​
∣
−
1
​
(∣Ai​−Ai+1​∣=0)(∣Ai​−Ai+1​∣≥1)​