# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
825000 | QwertyPi | Hacker (BOI15_hac) | C++14 | 168 ms | 92612 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 5e5 + 11;
const int LGN = 21;
unsigned int a[MAXN * 3], s[MAXN * 3], b[MAXN * 2];
struct SparseTable{
int st[LGN][MAXN * 2];
void init(int n, unsigned int* a, int (*g)(int, int)){
f = g;
for(int i = 0; i < n; i++) st[0][i] = a[i];
for(int j = 1; j < LGN; j++){
for(int i = 0; i <= n - (1 << j); i++){
st[j][i] = f(st[j - 1][i], st[j - 1][i + (1 << j - 1)]);
}
}
}
int qry(int l, int r){
int d = __lg(r - l + 1);
return f(st[d][l], st[d][r - (1 << d) + 1]);
}
int (*f)(int, int);
} ST;
int32_t main(){
int n; cin >> n;
for(int i = 0; i < n; i++) cin >> a[i];
for(int i = 0; i < n; i++) a[i + n * 2] = a[i + n] = a[i];
for(int i = 0; i < n * 3; i++) s[i + 1] = s[i] + a[i];
for(int i = 0; i < n * 2; i++) b[i] = s[i + (n + 1) / 2] - s[i];
ST.init(n * 2, b, [](int a, int b){ return min(a, b); });
int ans = 0;
for(int i = 0; i < n; i++){
ans = max(ans, ST.qry(i, i + (n + 1) / 2 - 1));
}
cout << ans << endl;
}
컴파일 시 표준 에러 (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... |