思路:如果高度大于能量 失去hi-e 等于得到e-hi,结果是2e-hi
否则 得到e-hi 结果是2e-hi
说明 每经过一堵墙就翻倍再减高度 显然具有单调性 做一次二分答案即可
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int n,a[N];
bool check(int x){
int tep=x;
for(int i=1;i<=n;i++){
tep=tep*2-a[i];
if(tep<0){
// cout<<x<<endl;
return 0;
}
if(tep>N)return 1;
}
return 1;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
int l=0,r=N;
while(l<r){
int mid=l+r>>1;
if(check(mid))r=mid;
else l=mid+1;
}
cout<<l<<endl;
}