問題一覧 > 通常問題

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

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

問題文

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

入力

N DN\ D
a2 a3 aNa_2\ a_3\ \dots a_N

1N1051 \le N \le 10^5
1D,ai1000(=103)1 \le D, a_i \le 1000(=10^3)

出力

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

サンプル

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

それぞれ 0,1,3,6,10060, 1, 3, 6, 1006 にいましたが、2,32, 3 人目が +1+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もしくは右上の雲マークをクリックしてアカウントを作成してください。