很讨厌的分类讨论,就是分别讨论杀死的两个怪是相邻还是不相邻,是第一个还是不是第一个

#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;
}