| 比赛 |
2026.9.12 |
评测结果 |
AAAAAAAAAA |
| 题目名称 |
分饼干 |
最终得分 |
100 |
| 用户昵称 |
默 |
运行时间 |
1.711 s |
| 代码语言 |
C++ |
内存使用 |
145.97 MiB |
| 提交时间 |
2026-09-12 09:55:03 |
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
const int N=55;
const int M=1e6+10;
const int v0=5e5;
int n;
int dp[N][M],a[N];
inline int read(){
int t=0,f=1;
register char c=getchar();
while(c<'0'||c>'9') f=(c=='-')?(-1):(f),c=getchar();
while(c>='0'&&c<='9') t=(t<<3)+(t<<1)+(c^48),c=getchar();
return t*f;
}
signed main(){
freopen("cookie.in","r",stdin);
freopen("cookie.out","w",stdout);
n=read();
for(int i=1;i<=n;i++) a[i]=read();
for(int i=0;i<=n;i++)
for(int j=0;j<=v0*2;j++) dp[i][j]=-INT_MAX;
dp[0][v0]=0;
for(int i=0;i<n;i++){
for(int j=0;j<=v0*2;j++){
dp[i+1][j]=max(dp[i+1][j],dp[i][j]);
if(j+a[i+1]<=v0*2) dp[i+1][j+a[i+1]]=max(dp[i+1][j+a[i+1]],dp[i][j]+a[i+1]);
if(j-a[i+1]>=0) dp[i+1][j-a[i+1]]=max(dp[i+1][j-a[i+1]],dp[i][j]);
}
}
cout<<dp[n][v0]<<"\n";
return 0;
}