調査時間を n 分間とし,調査開始時におけるトンネル内の車の台数を m とする.調査開始後 i - 1 分経過した時点から i 分経過するまでの 1 分間に入口を通過した車の台数と出口を通過した車の台数を,それぞれ in
i, out
i とする.
いうまでもなく,入力の i + 2 行目の最初の整数が in
i で,2 つ目の整数が out
i である.
調査開始後 i 分経過した時点 (i = 0, 1, 2, …, n) におけるトンネル内の車の台数を S
i とすると,S
0 = m であり,i>0 に対しては,
Si = Si-1 + ini - outi
となる.よって,
S0, S1, …, Si の最大値を Mi とすると,入力の 3 行目以降を1行読むたびに Si-1 と入力の i + 2 行目の値から Si を計算し,
- Si<0 ならば 0 を出力して停止する.
- Si>Mi-1 ならば Mi を Si とし,そうでなければ Mi を Mi-1 とする.
を実行すればよい.途中で S
i<0 となり 0 を出力して停止することがなければ,M
n を出力すればよい.
i + 2 行目 (i>0) の入力を処理する際に S
i, M
i を求めるのに必要な情報は S
i-1 と M
i-1 のみであるので,S
0, S
1, …, S
n に対して1つ,M
0, M
1, …, M
n に対して 1 つの変数を用意すれば十分である.
入力データの最初の 2 つは n = 100 であり,次の 2 つは n = 1000 であり,最後は n = 10000 である.また,out2 は途中で停止する入力であり,out4 は m が最大値として生き残る入力である.