AcWing 730. 机器人跳跃问题
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
using namespace std;
const int N = 1e5+10;
int q[N];
int n;
bool check(int e){
for(int i = 1;i<=n;i++){
e = 2*e-q[i];
if(e>=1e5) return true;//当能量值大于最高值,能量区间呈递增趋势
if(e<0) return false;//未满足题干条件
}
return true;
}
int main(){
cin>>n;
for(int i = 1;i<=n;i++) cin>>q[i];//输出每层楼的高度
//二分
int l = 0,r = 1e5;
while(l<r){
int mid = (l+r)/2;
if(check(mid))r = mid;
else l = mid+1;
}
//最后L和r的值是相同的
cout<<r<<endl;
return 0;
}