品出しロボット(★★)

2 secs 1024 MB
aiblecode's icon aiblecode

解説

商品の在庫数を表す配列 A=(A0,A1,AN1)A = (A_0, A_1 \cdots, A_{N - 1}) と、現在ロボットがいる場所 pos\mathrm{pos} を変数として管理すると見通しが良くなります。
ただし、問題文の添え字は 11 から始まりますが、プログラミングの実装では添え字を 00 から始めることに注意してください。

配列の範囲を超えないよう、指示に従ってシュミレーションをしましょう。

はじめ pos=0\mathrm{pos} = 0 とし、各指示について以下のように処理すれば良いです。

  • i=1,2,,Ni = 1, 2, \cdots, N の順に、SiS_i によって以下のように処理する。
    • leftpos>0\mathrm{pos > 0} のとき、 pospos1\mathrm{pos} \leftarrow \mathrm{pos} - 1 に更新する。
    • rightpos<N1\mathrm{pos < N - 1} のとき、 pospos+1\mathrm{pos} \leftarrow \mathrm{pos} + 1 に更新する。
    • answerAposA_{\mathrm{pos}} を出力する。
実装例(Python)
実装例(Java)
実装例(C++)