#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
struct node
{
int value,num;
} q[55];
int f[250000+5];
int main()
{
int n;
int total;
while(~scanf("%d",&n))
{
if(n<0)
break;
total=0;
for(int i=1; i<=n; i++)
{
scanf("%d %d",&q[i].value,&q[i].num);
total+=q[i].value*q[i].num;
}
int total1=total/2;
memset(f,0,sizeof(f));
for(int i=1; i<=n; i++)
for(int k=1; k<=q[i].num; k++)
for(int p=total; p>=q[i].value; p--)
f[p]=max(f[p],f[p-q[i].value]+q[i].value);
printf("%d %d\n",max(f[total1],total-f[total1]),min(f[total1],total-f[total1]));
}
return 0;
}
hdu 1171 Big Event in HDU 多重背包
最新推荐文章于 2021-02-01 08:04:36 发布