很讨厌的分类讨论,就是分别讨论杀死的两个怪是相邻还是不相邻,是第一个还是不是第一个
#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; }