Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- using namespace std;
- vector<int> num;
- int T, n;
- int main(){
- int target, x;
- scanf("%d", &T);
- for(int k = 1; k <= T; ++k){
- scanf("%d %d", &n, &target);
- num.assign(n + 1, 0);
- if(target > n * 10 || target < 0){
- cout << "No\n";
- for(int i = 1; i <= n; ++i){
- scanf("%*d");
- }
- continue;
- }
- vector<vector<bool>> memo(n + 1, vector<bool>(target + 1, false));
- for(int i = 0; i <= n; ++i){
- if(i != 0){
- scanf("%d", &x);
- num[i] = x;
- }
- for(int t = 0; t <= target; ++t){
- if(t == 0){
- memo[i][t] = true;
- } else if(i == 0){
- memo[i][t] = false;
- } else if(t < num[i]){
- memo[i][t] = memo[i - 1][t];
- } else {
- memo[i][t] = memo[i - 1][t] || memo[i - 1][t - num[i]];
- }
- }
- }
- if(memo[n][target]){
- cout << "Yes\n";
- } else {
- cout << "No\n";
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement