很讨厌的分类讨论,就是分别讨论杀死的两个怪是相邻还是不相邻,是第一个还是不是第一个
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 2e5 + 5;
int __t = 1, n;
void solve() {
cin >> n;
vector<int> num(n);
for (int i = 0; i < n; i++)
cin >> num[i];
int ans = 1e18, a = 1e18, b = 1e18;
for (int i = 1; i < n; i++) {
if (num[i] < b) {
if (num[i] < a)
b = a, a = num[i];
else
b = num[i];
}
int r = (num[i] + 1) / 2, l = num[i - 1];
if (i == 1)
ans = max(r, l);
else
ans = min(ans, r >= l ? r : r + (l - r + 1) / 2);
}
ans = min(ans, (a + 1) / 2 > num[0] ? num[0] + (a + 1) / 2
: (a + 1) / 2 + (b + 1) / 2);
cout << ans << "\n";
return;
}
int32_t main() {
#ifdef ONLINE_JUDGE
ios::sync_with_stdio(false);
cin.tie(0);
#endif
// cin >> __t;
while (__t--)
solve();
return 0;
}

京公网安备 11010502036488号