ACa~~~~~~~~~

蒙一武装直升机带班长:D  •  1年前


include <bits/stdc++.h>

using namespace std;

int n, a[100005];

void input() {

cin >> n;
for (int i = 1; i <= n; i++)
	cin >> a[i]; // a[i] 是血的变化量

}

bool check(int x) { // 计算 x 点血是否可以活下来

int hp = x;
for (int i = 1; i <= n; i++) {
	hp += a[i]; // hp增加或者减少
	if (hp <= 0)
		return false; // 如果活不下来返回 false
}
return true; // 如果可以活下来,返回 true

}

void work() {

int l = 1, r = 1000 * 100000-1, mid;
int ans = r;
while (l <= r) {
	mid = (l + r) / 2;
	if (check(mid)) { // 检查mid血,发现可以活下来
		ans = mid; // 记录下答案
		r = mid - 1; // 继续找左区间
	} else           // 如果发现活不下来
		l = mid + 1; // 继续找右区间
}
cout << ans << endl;

}

int main() {

input();
work();
return 0;

}


评论:

请先登录,才能进行评论