atcoder#AGC013C. [AGC013C] Ants on a Circle

[AGC013C] Ants on a Circle

配点 : 700700

問題文

周の長さ LL の円があります。 この円の周上には座標が設定されていて、座標の値は、ある基準点からどれだけ時計回りに進んだかを表しています。

この円周上に NN 匹の蟻がいます。 蟻には、座標の小さいものから順に、11 から NN までの番号がついています。 ii 番目の蟻は座標 XiX_i にいます。

これから、NN 匹の蟻は一斉に動き出します。 ii 匹目の蟻は、WiW_i11 なら時計回りに、WiW_i22 なら反時計回りに動き始めます。 全ての蟻の移動速度は常に、11 秒間にちょうど 11 の距離を進む速さです。 蟻が動いていくと、二つの蟻がぶつかることがあります。 その時はどちらの蟻も、ぶつかった瞬間に進む向きを反転して動き続けます。

蟻が動き始めてから TT 秒後にそれぞれの蟻がいる位置を求めて下さい。

制約

  • 入力は全て整数である
  • 1N1051 \leq N \leq 10^5
  • 1L1091 \leq L \leq 10^9
  • 1T1091 \leq T \leq 10^9
  • 0X1<X2<...<XNL10 \leq X_1 < X_2 < ... < X_N \leq L - 1
  • 1Wi21 \leq W_i \leq 2

入力

入力は以下の形式で標準入力から与えられる。

NN LL TT

X1X_1 W1W_1

X2X_2 W2W_2

::

XNX_N WNW_N

出力

出力は NN 行からなる。 出力の ii 行目には、ii 番目の蟻が TT 秒後にいる位置の座標を出力せよ。 なお、座標の値は 00 以上 LL 未満の値として出力せよ。

3 8 3
0 1
3 2
6 1
1
3
0

蟻が動き始めてから 1.51.5 秒後、蟻 11 と 蟻 22 が、座標 1.51.5 の位置でぶつかります。 その 11 秒後、蟻 11 と蟻 33 が、座標 0.50.5 の位置ぶつかります。 その 0.50.5 秒後、つまり蟻が動き始めてから 33 秒後には、 蟻 112233 はそれぞれ座標 113300 にいます。

4 20 9
7 2
9 1
12 1
18 1
7
18
18
1