Advertisement
mickypinata

SMMR-T105: Q&A

May 8th, 2020
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.22 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4.  
  5. vector<int> num;
  6. int T, n;
  7.  
  8. int main(){
  9.  
  10.     int target, x;
  11.  
  12.     scanf("%d", &T);
  13.     for(int k = 1; k <= T; ++k){
  14.         scanf("%d %d", &n, &target);
  15.         num.assign(n + 1, 0);
  16.  
  17.         if(target > n * 10 || target < 0){
  18.             cout << "No\n";
  19.             for(int i = 1; i <= n; ++i){
  20.                 scanf("%*d");
  21.             }
  22.             continue;
  23.         }
  24.  
  25.         vector<vector<bool>> memo(n + 1, vector<bool>(target + 1, false));
  26.         for(int i = 0; i <= n; ++i){
  27.             if(i != 0){
  28.                 scanf("%d", &x);
  29.                 num[i] = x;
  30.             }
  31.             for(int t = 0; t <= target; ++t){
  32.                 if(t == 0){
  33.                     memo[i][t] = true;
  34.                 } else if(i == 0){
  35.                     memo[i][t] = false;
  36.                 } else if(t < num[i]){
  37.                     memo[i][t] = memo[i - 1][t];
  38.                 } else {
  39.                     memo[i][t] = memo[i - 1][t] || memo[i - 1][t - num[i]];
  40.                 }
  41.             }
  42.         }
  43.  
  44.         if(memo[n][target]){
  45.             cout << "Yes\n";
  46.         } else {
  47.             cout << "No\n";
  48.         }
  49.     }
  50.  
  51.     return 0;
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement