Submission #723547

#TimeUsernameProblemLanguageResultExecution timeMemory
723547drdilyorHacker (BOI15_hac)C++17
0 / 100
1 ms340 KiB
#include<bits/stdc++.h> using namespace std; using ll = long long; struct segtree { int n; vector<ll> t; segtree(int m) : n(m), t(m*4, 1e18) {} void upd(int l, int r, ll x, int v, int tl, int tr) { if (l <= tl && tr <= r) { t[v] = min(t[v], x); return; } if (tr < l || r < tl) return; int mid = (tl+tr) / 2; upd(l, r, x, v*2, tl, mid); upd(l, r, x, v*2+1, mid+1, tr); } void upd(int l, int r, ll x) { upd(l, r, x, 1, 0, n-1); } ll query(int i) { ll res = t[i+=n]; for (i /= 2; i >= 1; i /= 2) res = min(res, t[i]); return res; } }; int main() { cin.tie(0)->sync_with_stdio(0); int n; cin >> n; vector<int> arr(n*2); for (int i = 0; i < n; i++) { cin >> arr[i]; arr[i+n] = arr[i]; } segtree s(n*2); for (int l = 0, r = (n+1) / 2 - 1; l < n; l++, r++) { ll sum = accumulate(arr.begin() + l, arr.begin() + r + 1, 0ll); s.upd(l, r, sum); } ll res = 0; for (int i = 0; i < n; i++) res = max(res, min(s.query(i), s.query(i+n))); cout << res << '\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...