Submission #1268010

#TimeUsernameProblemLanguageResultExecution timeMemory
1268010rtriHacker (BOI15_hac)C++20
0 / 100
0 ms328 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 + 1), 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);
    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...