题目
翻译
题目
线性王国只有一条电车线。它有n个车站。按电车行驶方向从1到n编号。在第
i
i
i个车站有
a
a
ai名乘客离开电车,有
b
b
bi名乘客进入电车。在到达第一个车站前,电车是空的。同样,当电车到达最后一个车站时,所有乘客都将离开电车,因此电车也将是空的。
你的任务是计算出电车所需的最小容量,即电车内任何时刻乘客量都不会超过该容量。注意,到达每个车站时,要下车的乘客会在要上车的乘客上车前离开。
输入
第一行为一个数
n
n
n(2 ≤
n
n
n ≤ 1000)一 电车车站数
接下来n行每行包括2个整数
a
a
ai,
b
b
bi(0 ≤
a
a
ai,
b
b
bi ≤ 1000)一 在第
i
i
i个车站,要下车的乘客数和要上车的乘客数。数据是按电车运行经过的第一个车站到最后一个车站输入的。
- 在到达车站前,要下车的乘客数不会超过车厢内的总乘客数。即公式: ∀ i ( 1 ≤ i ≤ n ) : ∑ j = 1 i − 1 b j − ∑ j = 1 i − 1 a j ≥ a i \quad\forall i(1 ≤ i ≤ n):\sum_{j=1}^{i-1} b_j - \sum_{j=1}^{i-1} a_j ≥ a_i ∀i(1≤i≤n):∑j=1i−1bj−∑j=1i−1aj≥ai 。并且 a a a1=0
- 在最后一个车站,所有乘客将离开电车使电车变空。即公示 ∑ j = 1 n − 1 b j − ∑ j = 1 n − 1 a j = a n \sum_{j=1}^{n-1} b_j - \sum_{j=1}^{n-1} a_j = a_n ∑j=1n−1bj−∑j=1n−1aj=an
- 最后一个车站时没有乘客会上车。即, b b bn = 0。
输出
输出一个整数表示最小客容量(也可以是0)
分析
即求出电车行驶过程中,车厢内乘客数的最大值,输出即可。
代码
#include<iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int a, b,cur=0, max = 0;
while (n--)
{
cin >> a >> b;
cur = cur + b - a;//更新当前车厢人数
max = max > cur ? max : cur;//更新最大乘客数
}
cout << max;
return 0;
}