一道多重背包求方案数的题,加了#prama GCC optmize(2)
然后TLE 60pts->WA 80pts
#include<bits/stdc++.h>
#pragma GCC optimize(2)
using namespace std;
const int N = 5e6;
int v,n,a[N],b[N],sum;
long long dp[N]={1};
int main()
{
while(~scanf("%d",&v)&&v!=-1)
{
dp[0]=1,sum=0;
for(int i=1;i<=v;i++)
{
scanf("%d%d",&a[i],&b[i]);
sum+=a[i]*b[i];
}
for(int i=1;i<=v;i++)
for(int j=a[i];j<=sum;j++)
{
for(int k=1;k<=b[i];k++)
dp[j]+=dp[j-k*a[i]];
}
for(int i=(sum%2?sum/2+1:sum/2);i<=sum;i++)
if(dp[i]){
printf("%d %d\n",i,sum-i);
break;
}
}
return 0;
}