fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. const long long MaxN = 55;
  4. long long n,k,m;
  5. string s;
  6. long long prefix[MaxN];
  7. void backtrack(long long pos)
  8. {
  9. if(pos==n+1)
  10. {
  11. for (long long i=1; i<s.size(); i++)
  12. {
  13. cout << s[i] ;
  14. }
  15. cout << "\n";
  16. return;
  17. }
  18. for (long long i=0; i<=((prefix[max(0ll,pos-1)]-prefix[max(0ll,pos-1-(m-1))])<k); i++)
  19. {
  20. s[pos*2-1]=i+'0';
  21. s[pos*2+1]=' ';
  22. if(i==0)
  23. {
  24. prefix[pos]=prefix[max(0ll,pos-1)];
  25. backtrack(pos+1);
  26. }
  27. else
  28. {
  29. prefix[pos]=prefix[max(0ll,pos-1)]+1;
  30. backtrack(pos+1);
  31. }
  32. }
  33. }
  34. int main()
  35. {
  36. ios_base::sync_with_stdio(0);
  37. cin.tie(0);
  38. cin >> n >> k >> m;
  39. for (long long i=1; i<=2*n; i++)
  40. {
  41. s += ' ';
  42. }
  43. backtrack(1);
  44. }
  45.  
Success #stdin #stdout 0s 5320KB
stdin
Standard input is empty
stdout