# | 제출 시각UTC-0 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
934947 | MisterReaper | Sjeckanje (COCI21_sjeckanje) | C++17 | 655 ms | 49236 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using i64 = long long;
struct Info {
i64 bound[2];
i64 dp[2][2];
Info() { *this = Info(0); }
Info(i64 x) {
bound[0] = bound[1] = x;
dp[0][0] = dp[0][1] = dp[1][0] = 0;
dp[1][1] = std::abs(x);
}
};
Info operator+(Info lhs, Info rhs) {
Info res;
res.bound[0] = lhs.bound[0];
res.bound[1] = rhs.bound[1];
for(int l = 0; l < 2; l++) {
for(int r = 0; r < 2; r++) {
for(int o = 0; o < 2; o++) {
for(int m = 0; m < 2; m++) {
if(o && m) {
if((lhs.bound[1] < 0) == (rhs.bound[0] < 0)) {
res.dp[l][r] = std::max(res.dp[l][r], lhs.dp[l][o] + rhs.dp[m][r]);
}
} else {
res.dp[l][r] = std::max(res.dp[l][r], lhs.dp[l][o] + rhs.dp[m][r]);
}
}
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |