提交时间:2024-05-12 10:34:31
运行 ID: 146519
#include<iostream> #include<cstring> using namespace std; int p[501],w[501],dp[10001]; int main(){ int t; cin>>t; for(int k=1;k<=t;k++){ memset(dp,0x3f,sizeof(dp)); dp[0]=0; int e,f,n,m; cin>>e>>f; m=f-e; cin>>n; for(int i=1;i<=n;i++){ cin>>p[i]>>w[i]; } for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(j>=w[i]){ dp[j]=min(dp[j],dp[j-w[i]]+p[i]); } } } if(dp[m]!=0x3f3f3f3f){ cout<<"The minimum amount of money in the piggy-bank is "<<dp[m]<<"."; cout<<endl; } else cout<<"This is impossible."<<endl; } return 0; }