O(n)解法,假设跳到最后能量刚好为0,从后往前推最小能量
#include<cstdio>
using namespace std;
const int N=1e5+5;
int a[N];
int main(){
int n,e;
scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
e=a[n]/2+(a[n]&1);
for(int i=n-1;i;i--)
e=(e+a[i])/2+((e+a[i])&1);
printf("%d",e);
return 0;
}