Advertisement
Guest User

Untitled

a guest
Jun 29th, 2016
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.01 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. #include <algorithm>
  4. #include <vector>
  5. #include <fstream>
  6. #include <cstdio>
  7.  
  8. using namespace std;
  9.  
  10. const int N = 2000;
  11. int c[N];
  12. int can[N][N];
  13.  
  14. int main() {
  15. int n, give;
  16. cin >> n >> give;
  17. for (int i = 0; i < n; i++) {
  18. cin >> c[i];
  19. }
  20. can[0][0] = 1;
  21. //for (int i = 0; i <= give; i++)
  22. // can[i][0] = 1;
  23. for (int i = 0; i < n; i++) {
  24. for (int w = give; w >= 0; w--) {
  25. for (int k = 0; k <= give; k++) {
  26. /*if (can[w][k]) {
  27. cout << w << " " << k << " " << c[i] << endl;
  28. }*/
  29. if (can[w][k] == 1) can[w + c[i]][k] = 1;
  30. if (can[w][k] == 1) can[w + c[i]][k + c[i]] = 1;
  31. }
  32. }
  33. }
  34.  
  35. /*for (int i = 0; i <= give; i++) {
  36. for (int k = 0; k <= give; k++) {
  37. if (can[i][k]) {
  38. cout << i << " " << k << endl;
  39. }
  40. }
  41. }*/
  42.  
  43. int cnt = 0;
  44. for (int k = 0; k <= give; k++) {
  45. if (can[give][k]) cnt++;
  46. }
  47. cout << cnt << endl;
  48. for (int k = 0; k <= give; k++) {
  49. if (can[give][k]) {
  50. cout << k << " ";
  51. }
  52. }
  53. return 0;
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement