fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. long long n,k;
  4. string s;
  5. void backtrack(long long pos, long long cnt)
  6. {
  7. if(pos==n+1)
  8. {
  9. for (long long i=1; i<s.size(); i++)
  10. {
  11. cout << s[i];
  12. }
  13. cout << "\n";
  14. return;
  15. }
  16. if(pos==1)
  17. {
  18. for (long long i=0; i<=1; i++)
  19. {
  20. s[2*pos-1]=char(i+'0');
  21. s[2*pos]=' ';
  22. if(i==0)
  23. {
  24. backtrack(pos+1,cnt);
  25. }
  26. else if(cnt+1<=k)
  27. {
  28. backtrack(pos+1,cnt+1);
  29. }
  30. }
  31. return;
  32. }
  33. else
  34. {
  35. for (long long i=0; i<=(!(cnt==k && s[2*(pos-1)-1]=='0')); i++)
  36. {
  37. s[2*pos-1]=char(i+'0');
  38. s[2*pos]=' ';
  39. if(i==0)
  40. {
  41. backtrack(pos+1,cnt);
  42. }
  43. else if(i==1 && s[2*(pos-1)-1]=='0')
  44. {
  45. backtrack(pos+1,cnt+1);
  46. }
  47. else
  48. {
  49. backtrack(pos+1,cnt);
  50. }
  51. }
  52. }
  53. }
  54. int main()
  55. {
  56. ios_base::sync_with_stdio(0);
  57. cin.tie(0);
  58. cin >> n >> k;
  59. for (long long i=1; i<=2*n; i++)
  60. {
  61. s+=' ';
  62. }
  63. backtrack(1,0);
  64. }
  65.  
Success #stdin #stdout 0.01s 5316KB
stdin
Standard input is empty
stdout