题解
公交车
1 条题解
-
0
#include<bits/stdc++.h> using namespace std; int a[200005]; // 存储每次停靠的乘客变化量 long long c[200005]; // 前缀和数组,c[i]表示前i次停靠的累计变化 long long s = 0; // 记录过程中需要的最小初始乘客数 int main() { int n; cin >> n; // 读入每次停靠的变化量并计算前缀和 for (int i = 1; i <= n; i++) { cin >> a[i]; c[i] = c[i - 1] + a[i]; // c[i]是前i次停靠的累计变化 } // 遍历每次停靠,当乘客减少时更新最小初始乘客数 for (int i = 1; i <= n; i++) { if (a[i] < 0) { // 只在乘客减少时检查 // 更新s:确保初始乘客数至少为 -c[i](即当前乘客数量不能是负数) s = max(s, -c[i]); } } // 最小初始乘客数 + 总变化量 cout << s + c[n]; return 0; }
- 1