제출 #1268013

#제출 시각아이디문제언어결과실행 시간메모리
1268013rtriHacker (BOI15_hac)C++20
0 / 100
0 ms324 KiB
#include <bits/stdc++.h> using namespace std; int n; vector<int> vals; class ST { int n; vector<int> val; public: ST(vector<int> _val) { val = _val; n = _val.size() / 2; for (int i = n - 1; i > 0; i--) val[i] = min(val[(i << 1)], val[1 | (i << 1)]); } int query(int l, int r) { if (n < r) { r -= n; return min(query(0, r), query(l, n)); } int ans = 1e9; for (l += n, r += n; l < r; l >>= 1, r >>= 1) { if (l & 1) ans = min(ans, val[l++]); if (r & 1) ans = min(ans, val[--r]); } return ans; } }; int main() { cin >> n; vals.resize(n); for (int i = 0; i < n; i++) cin >> vals[i]; int rollsum = 0; int sz = (n + 1) / 2; for (int i = 0; i < sz; i++) { rollsum += vals[i]; } vector<int> val(n * 2, 1e9); for (int i = 0; i < n; i++) { val[n + i] = rollsum; rollsum += vals[(i + n / 2) % n] - vals[i % n]; } ST st(val); int ans = 0; for (int i = 0; i < n; i++) { int res = st.query(i, i + sz + 1); ans = max(res, ans); } cout << ans << endl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...