Advertisement
DASBD72

157

May 13th, 2019
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.59 KB | None | 0 0
  1. #include <cstdio>
  2. #include <cmath>
  3. #include <cstring>
  4. #define INF 0x7FFFFFFF
  5. int ST[105], SV[105];
  6. int dp[1000005];
  7. int Eat(int n,int w){
  8.     if(w-ST[n]<=0)return dp[w];
  9.     else dp[w] = fmax(dp[w], dp[w-ST[n]] + SV[n]);
  10. }
  11. int main(){
  12.     int T, N, M;
  13.     for(scanf("%d",&T); T ;T--){
  14.         int ans = 0;
  15.         scanf("%d %d",&N,&M);
  16.         for(int i = 1;i <= N;i++) scanf("%d %d", &ST[i], &SV[i]);
  17.         for(int i = 1;i <= M;i++) dp[i] = (ST[1] <= i) ? SV[1] : 0;
  18.         for(int y = 2;y <= N;y++)for(int x = M;x >= 1;x--){
  19.             Eat(y, x);
  20.         }
  21.         for(int i = 1;i <= M;i++) ans = fmax(dp[i], ans);
  22.         printf("%d\n", ans);
  23.     }
  24. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement