```
#include<bits/stdc++.h>
using namespace std;
int n,m,ans,l=1,r;
int a[285397];
bool erb(int x){
bool bc=true;
if(x<=0){
bc=false;
}
for(int i=0;i<n;i++){
x+=a[i];
if(x<=0){
bc=false;
}
}
return bc;
}
int main(){
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
r=1e8;
ans=0;
while(l<=r){
m=l+(r-l)/2;
while(1)
if(erb(m)){
r=m-1;
ans=m;
}else{
l=m+1;
}
}
printf("%d",ans);
return 0;
}
```
by zero_egg @ 2023-10-10 22:02:10
这道题纯二分练习题,暴力模拟都过不了,可以尝试放弃
by zero_egg @ 2023-10-10 22:03:05
```
#include<iostream>
using namespace std;
int a,n,sum=1,add=0;
int main() {
cin>>n;
for(int i=1;i<=n;i++){
cin>>a;
if(a<0){
if(add==0) { sum+=0-a; }
else if(add!=0 && add>0-a){ add+=a; }
else { int x=a+add; add = 0; sum -= x; }
}else if(a>=0){
add+=a;
}
}
cout<<sum;
return 0;
}
```
帮你修改了,已AC
by sgweo8ys @ 2023-10-10 22:05:40
@[zero_egg](/user/615166) 这题其实可以模拟,假设初始血量是0,扫一遍得到过程中血量的最低值 mn(会是一个负数或0),输出 -mn + 1 即可。
by sgweo8ys @ 2023-10-10 22:19:24
@[sgweo8ys](/user/203501) 好吧,膜拜大佬
~~这题切过好久了都忘了,有时间重看一遍~~
by zero_egg @ 2023-10-10 22:22:05