fork download
  1. #include <stdio.h>
  2. #include<stdlib.h>
  3. int issubset(int *arr, int n, int m)
  4. {
  5. if(m==0)
  6. return 1;
  7. if(n==0 && m!=0)
  8. return 0;
  9. if(arr[n-1]>m)
  10. return issubset(arr, n-1,m);
  11. return issubset(arr, n-1, m) || issubset(arr, n-1, m-arr[n-1]);
  12. }
  13. int main(void) {
  14. int t, n, m, *arr, i, de;
  15. scanf("%d", &t);
  16. while(t--)
  17. {
  18. scanf("%d %d", &n, &m);
  19. arr=(int *)malloc(n*sizeof(int));
  20. for(i=0;i<n;i++)
  21. scanf("%d", &arr[i]);
  22. de=issubset(arr, n, m);
  23. if(de==1)
  24. printf("Yes\n");
  25. else
  26. printf("No\n");
  27. free(arr);
  28. }
  29. return 0;
  30. }
  31.  
Success #stdin #stdout 0s 2188KB
stdin
5
3 3
1
1
1
5 11
1
2
4
8
16
5 23
1
2
4
8
16
5 13
1
5
5
10
10
20 132
17
6
4
998
254
137
259
153
154
3
28
19
123
542
857
23
687
35
99
999
stdout
Yes
Yes
Yes
No
Yes