# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
120025 | E869120 | Hacker (BOI15_hac) | C++14 | 233 ms | 22412 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <iostream>
#include <algorithm>
using namespace std;
#pragma warning (disable: 4996)
long long N, A[1 << 20], C[1 << 20], T[1 << 20];
bool solve(long long pos) {
for (int i = 0; i <= N * 2; i++) T[i] = 0;
for (int i = 0; i < N; i++) {
long long E = C[i + (N + 1) / 2] - C[i];
if (E >= pos) { T[i + 1] = 1; T[i + 1 + N] = 1;}
}
for (int i = 1; i <= 2 * N; i++) T[i] += T[i - 1];
for (int i = 0; i < N; i++) {
if (T[i + (N + 1) / 2] - T[i] == (N + 1) / 2) return true;
}
return false;
}
int main() {
scanf("%lld", &N);
for (int i = 1; i <= N; i++) { scanf("%lld", &A[i]); C[i] = A[i]; C[i + N] = C[i]; }
for (int i = 1; i <= N * 2; i++) C[i] += C[i - 1];
long long cl = 0, cr = (1LL << 30), cm, maxn = -(1LL << 30);
for (int i = 0; i < 33; i++) {
cm = (cl + cr) / 2;
bool I = solve(cm);
if (I == true) { cl = cm; maxn = max(maxn, cm); }
else { cr = cm; }
}
cout << maxn << endl;
return 0;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |