Official

D - Wandering Editorial by QCFium


制約が \(N \le 200000\) なので愚直にロボットをシミュレートする計算量が \(\Theta(N^2)\) の解は実行時間制限に間に合わず TLE となってしまいます。
「正の向きに \(A_1\) 進む。正の向きに \(A_2\) 進む。正の向きに \(A_3\) 進む。\(\dots\) 正の向きに \(A_i\) 進む。」という一連の動作を動作 \(i\) と呼ぶことにします。
ここで \(1 \le i \le N\) を満たす全ての整数 \(i\) について次の値は簡単に \(O(N)\) で求めることができます。(\(i\) の小さい順に求められます)

  • \(p_i\) : 動作 \(i\) の合計の座標の変化
  • \(q_i\) : 動作 \(i\) を座標 \(0\) で始めた場合の、開始から終了までの座標の最大値

そしてこれが求まると以下の要領で答が求まります。

  • 答え (座標の最大値) を入れる変数 \(r\)\(0\) とする。
  • 今の座標 \(x\)\(0\) として\(i = 1, 2, 3, \dots , N\)について以下を行う
    • \(r\) を、\(\max(r, x + q_i)\) で置き換える
    • \(x\)\(x + p_i\) で置き換える

時間計算量は \(O(N)\) です。

posted:
last update: