0-1背包问题。。。
#include<stdio.h>
#include<string.h>
int v[50],m[100],a[250005];
int main()
{
int i,j,k,n,sum,t;
while(scanf("%d",&n)!=EOF && n>=0)
{
sum=0;
memset(a,0,sizeof(a));
for(i=0;i<n;i++){
scanf("%d %d",&v[i],&m[i]);
sum+=v[i]*m[i];
}
t=sum/2;
for(i=0;i<n;i++){
for(k=0;k<m[i];k++){
for(j=t;j>=v[i];j--){
if(a[j]<a[j-v[i]]+v[i])
a[j]=a[j-v[i]]+v[i];
}
}
}
printf("%d %d\n",sum-a[t],a[t]);
}
return 0;
}