1 #include<bits/stdc++.h> 2 using namespace std; 3 const int INF = 1 << 30; 4 int main() 5 { 6 int T,E,F,N,P,W; 7 int dp[50005]; 8 while(cin>>T) 9 { 10 while(T--) 11 { 12 dp[0] = 0; 13 scanf("%d %d",&E,&F);/*E爲weight of an empty pig ,F爲裝滿硬幣的存儲罐的重量*/ 14 scanf("%d",&N); /*硬幣的種類*/ 15 for(int i = 1; i <= F; i++) 16 dp[i] = INF; 17 for(int i = 0; i < N; i++) 18 { 19 scanf("%d %d",&P,&W); /*P爲硬幣的面值 W爲硬幣的重量*/ 20 for(int j = W; j <= F-E; j++) 21 dp[j] = min(dp[j],dp[j-W]+P); 22 } 23 if(dp[F-E] == INF ) cout<<"This is impossible."<<endl; 24 else cout<<"The minimum amount of money in the piggy-bank is "<<dp[F-E]<<"."<<endl; 25 } 26 } 27 28 return 0; 29 }