比赛 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;
}