| 比赛 |
2026.9.12 |
评测结果 |
AAAAAAAAAA |
| 题目名称 |
分饼干 |
最终得分 |
100 |
| 用户昵称 |
RpUtl |
运行时间 |
0.938 s |
| 代码语言 |
C++ |
内存使用 |
9.30 MiB |
| 提交时间 |
2026-09-12 10:05:23 |
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 10;
const int inf = 1e9;
int n, s, f[2][N], a[55];
inline void cmax(int &u, int v) {
u = max(u, v);
}
int main() {
freopen("cookie.in", "r", stdin);
freopen("cookie.out", "w", stdout);
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> a[i];
s += a[i];
}
for (int i = -s; i <= s; i++) f[0][i + s] = f[1][i + s] = -inf;
f[0][s] = 0;
for (int i = 0; i < n; i++) {
int o = (i & 1), v = a[i + 1];
for (int j = -s; j <= s; j++) {
cmax(f[o ^ 1][j + s], f[o][j + s]);
if (j - v >= -s) cmax(f[o ^ 1][j - v + s], f[o][j + s] + v);
if (j + v <= s) cmax(f[o ^ 1][j + v + s], f[o][j + s] + v);
f[o][j + s] = -inf;
}
}
cout << f[n & 1][s] / 2 << '\n';
return 0;
}