有的 #include<bits/stdc++.h> #define MAXN 100006 using namespace std; int N; int h[MAXN]; int check(int energy, int highest){ int e = energy; for(int i=1;i<=N;i++){ e = e * 2 - h[i]; if(e < 0)return 0; if(e >= highest) return 1; } return 1; } int main(){ scanf("%d",&N); int maxi = 0; h[0] = 0; for(int i=1;i<=N;i++){ scanf("%d",&h[i]); if(h[i] > h[maxi]) maxi = i; } int l = 0, r = h[maxi], m; while(l<=r) { m = (l + r)>>1; if(check(m, h[maxi]))r = m - 1; else l = m + 1; } printf("%d\n",l); return 0; }
点赞 评论

相关推荐

双尔:反手回一个很抱歉,经过慎重考虑,您与我的预期暂不匹配,感谢您的投递
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务