这道二分题目为什么有问题
#include<bits/stdc++.h>
using namespace std;
int n,a[5],r,l,mid,ans;
bool check(int x){
int z=0;
for(int i=0;i<n;i++){
z+=a[i];
if(z<=0) return false;
}
return true;
}
int main(){
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
if(a[i]<0) r-=a[i];
}
l=0;
while(l<=r){
mid=(l+r)/2;
if(check(mid)){
r=mid-1;
ans=mid;
}
else l=mid+1;
}
cout<<ans+1;
return 0;
}
为什么会错啊!!求大佬帮忙看一看