刘同学有一个非常不错的习惯值得我们学习,那就是记录每日的研题情况。每天可能会有新增待研题目,也可能会研究一些原来还未解决的题目,但这两种情况不会同时出现。
刘同学只用一个数字pip_ip i 来记录,如果pip_ip i 是正数则表示第i天新增了pip_ip i 个待研题目,如果pip_ip i 是负数则表示第iii天解决了pip_ip i 个题目。
日复一日年复一年,刘同学早就忘了在开始记录前有多少个待研题目了,需要你帮忙算算。
输入格式
第一行:单个整数表示 nnn;
第二行:nnn 个整数 p1,p2,…,pnp_1, p_2, …, p_np 1 ,p 2 ,…,p n ,表示刘同学每一天的研题情况。
输出格式
单个整数:表示在开始记录研题情况之前,至少有多少个待研题目。
数据范围
对于 30%30%30% 的数据,1≤n≤10001≤n≤10001≤n≤1000;
对于 60%60%60% 的数据,1≤n≤1051≤n≤10^51≤n≤10 5 ;
对于 100%100%100% 的数据,1≤n≤1071≤n≤10^71≤n≤10 7 , −20000≤pi≤20000−20000≤p_i≤20000−20000≤p i ≤20000。
样例数据
输入
输出
说明
样例1 5
-1 -2 1 -3 4 5
样例2 3
-9 -1 1 10
我的代码:
#include<bits/stdc++.h>
using namespace std;
long long n;
long long a[10000005];
long long ans;
long long z;
int main(){
cin>>n;
for(long long i=1;i<=n;i++){
cin>>a[i];
}
for(long long i=1;i<=n;i++){
if(a[i]<0){
if(z>=abs(a[i])){
z-=abs(a[i]);
}else{
ans+=abs(a[i])-z;
z=0;
}
}else{
z+=a[i];
}
}
cout<<ans;
return 0;
}