比赛 2026.9.12 评测结果 AAAAAAAAAA
题目名称 分饼干 最终得分 100
用户昵称 VTXE 运行时间 0.505 s
代码语言 C++ 内存使用 9.28 MiB
提交时间 2026-09-12 10:33:29
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
#define ll long long

ll n;
ll a[60];
ll sum;
ll g[510000];
ll f[510000];

int main(){
	freopen("cookie.in","r",stdin);
	freopen("cookie.out","w",stdout);
	ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
	cin>>n;
	for (int i=1;i<=n;i++){
		cin>>a[i];
		sum+=a[i];
	}
	for (int i=1;i<=sum;i++) f[i]=-1;
	f[0]=0;
	for (int i=1;i<=n;i++){
		for (int j=0;j<=sum;j++) g[j]=-1;
		ll s=a[i];
		for (int j=0;j<=sum;j++){
			if (f[j]==-1) continue;
			g[j]=max(g[j],f[j]);
			if (j+s<=sum) g[j+s]=max(g[j+s],f[j]+s);
			if (j>=s){
				g[j-s]=max(g[j-s],f[j]);
			}else{
				g[s-j]=max(g[s-j],f[j]-j+s);
			}
		}
		for (int j=0;j<=sum;j++) f[j]=g[j];
	}
	if (f[0]>0) cout<<f[0]<<'\n';
	else cout<<"0\n";
	return 0;
}