这题别看题目有点长并且是个省选联考题,其实总结下来就一句话:求前缀和中所有不为负数的前缀和的和。
那么总结完题目这题就简单多了。
1:首先算出所有前缀和,通用公式:
sum[0]=0;
...
sum[i] = sum[i-1] + x;
接下来只需要按照题目要求从2开始遍历前缀和数组,将所有不为负数的数加起来就好了。
接下来上代码
Code:
#include <bits/stdc++.h>
using namespace std;
long long sum[100005];
int main(){
int n;
cin >> n;
sum[0]=0;
for(int i=1;i<=n;i++){
int x;
cin >> x;
sum[i] = sum[i-1] + x;
}
long long num=0;
for(int i=2;i<=n;i++){
if(sum[i]>=0){
num += sum[i];
}
}
cout << num;
return 0;
}