#include<iostream> #include<cstdio> #include<cmath> using namespace std; int N[110][110],m1[300000],m2[300000]; int main() { int i,j,num,num1,k,n; while(scanf("%d",&n)&&(n>0)) { memset(m1,0,sizeof(m1)); memset(m2,0,sizeof(m2)); memset(N,0,sizeof(N)); for(i=0;i<n;i++) scanf("%d%d",&N[i][0],&N[i][1]); num=N[0][0]*N[0][1]; for(i=0;i<=num;i+=N[0][0]) m1[i]=1; num1=0; for(i=1;i<n;i++) { num1=N[i][0]*N[i][1]; num+=num1; for(j=0;j<=num;j+=N[i-1][0]) for(k=0;k<=num1;k+=N[i][0]) m2[j+k]+=m1[j]; for(j=0;j<=num;j++) {m1[j]=m2[j];m2[j]=0;} } for(i=num/2;i>=0;--i) { if(m1[i]!=0) { printf("%d %d\n",num-i,i); break; } } } return 0; }
hdu 1171
最新推荐文章于 2018-09-20 19:40:03 发布