問題一覧 > 通常問題

No.1090 ソーシャルディスタンス / Social Distance

レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限 : 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 155
作問者 : nullnull / テスター : butsurizukibutsurizuki
2 ProblemId : 4571 / 自分の提出
問題文最終更新日: 2022-04-25 23:36:21

問題文

$N$ 人の人が数直線上にならんでおり、$1$ 番目の人は $0$ の位置にいます。
$i - 1(2 \le i \le N)$ 番目の人と $i$ 番目の人の距離は正の方向に $a_i$ です。
新型ウィルスの蔓延により、ソーシャルディスタンスとして人と人との距離が $D$ 以上でなければ行けなくなりました。
このことから、$2$ 番目の人から順に $i$ 番目の人は $i-1$ 番目の人との距離が $D$ 未満の場合、$D$ になるまで正の方向に移動します。
この移動で $i+1$ 番目の人と位置が逆転した場合、負の距離として扱います。つまり、条件を満たすためには最終的に必ず $i$ 番目より $i+1$ 番目の人のほうが大きい座標にいます。
ソーシャルディスタンスを取ったあとの $N$ 人全ての人の座標を出力してください。

入力

$N\ D$
$a_2\ a_3\ \dots a_N$

$1 \le N \le 10^5$
$1 \le D, a_i \le 1000(=10^3)$

出力

空白区切りで一行に $N$ 人の座標を出力せよ。末尾に空白を入れないこと。最後に改行せよ。

サンプル

サンプル1
入力
5 2
1 2 3 1000
出力
0 2 4 6 1006

それぞれ $0, 1, 3, 6, 1006$ にいましたが、$2, 3$ 人目が $+1$ ずれました。

サンプル2
入力
10 90
1 2 3 4 5 6 7 8 9
出力
0 90 180 270 360 450 540 630 720 810

出典

YSF Beginner Contest: C - ソーシャルディスタンス / Social Distance
writer: null
tester: butsuri_0523
HackerRank の規約に基づいて移植されました。一部サイトの都合などで改変したところがあります。

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。