問題1 解説

 調査時間を n 分間とし,調査開始時におけるトンネル内の車の台数を m とする.調査開始後 i - 1 分経過した時点から i 分経過するまでの 1 分間に入口を通過した車の台数と出口を通過した車の台数を,それぞれ ini, outi とする. いうまでもなく,入力の i + 2 行目の最初の整数が ini で,2 つ目の整数が outi である.
 調査開始後 i 分経過した時点 (i = 0, 1, 2, …, n) におけるトンネル内の車の台数を Si とすると,S0 = m であり,i>0 に対しては,

   Si = Si-1 + ini - outi

となる.よって, S0, S1, …, Si の最大値を Mi とすると,入力の 3 行目以降を1行読むたびに Si-1 と入力の i + 2 行目の値から Si を計算し,

  1. Si<0 ならば 0 を出力して停止する.
  2. Si>Mi-1 ならば Mi を Si とし,そうでなければ Mi を Mi-1 とする.
を実行すればよい.途中で Si<0 となり 0 を出力して停止することがなければ,Mn を出力すればよい. i + 2 行目 (i>0) の入力を処理する際に Si, Mi を求めるのに必要な情報は Si-1 と Mi-1 のみであるので,S0, S1, …, Sn に対して1つ,M0, M1, …, Mn に対して 1 つの変数を用意すれば十分である. 入力データの最初の 2 つは n = 100 であり,次の 2 つは n = 1000 であり,最後は n = 10000 である.また,out2 は途中で停止する入力であり,out4 は m が最大値として生き残る入力である.