fork download
  1. #pragma GCC optimize("O3,unroll-loops")
  2. #include <bits/stdc++.h>
  3. using namespace std;
  4. #define name "aaaaaa"
  5. #define endl "\n"
  6. #define fi first
  7. #define se second
  8. using ll = long long;
  9. using db = double;
  10. using ld = long double;
  11. using pii = pair<int, int>;
  12. using pll = pair<ll, ll>;
  13. using ppii = pair<int, pii>;
  14. using vi = vector<int>;
  15. using vll = vector<ll>;
  16. using vd = vector<double>;
  17. using pdb = pair<db, db>;
  18.  
  19. int n, x;
  20.  
  21. map<set<int>, int> mp;
  22.  
  23. void backtrack(int id, vector<int> v, int lst, int sum = 0){
  24. if(id >= 1){
  25. if(sum - v[0] > x) return;
  26. }
  27. if(id >= 1){
  28. set<int> s;
  29. bool ck = true;
  30. for(int i : v){
  31. if(sum - i < 1 || sum - i > x) ck = false;
  32. s.insert(sum - i);
  33. }
  34. if(ck && s.size() == n){
  35. mp[s] = true;
  36. }
  37. }
  38. if(id == x + 1) return;
  39. for(int i = lst; i <= x; i++){
  40. v.push_back(i);
  41. backtrack(id + 1, v, i, sum + i);
  42. v.pop_back();
  43. }
  44. }
  45.  
  46. int gay(int n2, int x2){
  47. n = n2, x = x2;
  48. mp.clear();
  49. vector<int> empt;
  50. backtrack(0, empt, 1);
  51. return mp.size();
  52. }
  53.  
  54. void solve(){
  55. for(int i = 1; i <= 10; i++){
  56. for(int j = 1; j <= 30; j++){
  57. cout << gay(i, j) << ' ';
  58. }
  59. cout << endl;
  60. }
  61. }
  62.  
  63. int main(){
  64. ios_base::sync_with_stdio(0); cin.tie(0);
  65. if(fopen(name".inp", "r")) {
  66. freopen(name".inp", "r", stdin);
  67. freopen(name".out", "w", stdout);
  68. }
  69.  
  70. int test = 1;
  71. //cin >> test;
  72. while(test--){
  73. solve();
  74. }
  75. }
  76.  
Success #stdin #stdout 1.6s 5324KB
stdin
Standard input is empty
stdout
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 
0 1 3 6 10 15 21 28 36 45 55 66 78 91 105 120 136 153 171 190 210 231 253 276 300 325 351 378 406 435 
0 0 0 0 1 3 7 13 22 34 50 70 95 125 161 203 252 308 372 444 525 615 715 825 946 1078 1222 1378 1547 1729 
0 0 0 0 0 0 0 0 1 3 7 14 25 41 64 95 136 189 256 339 441 564 711 885 1089 1326 1600 1914 2272 2678 
0 0 0 0 0 0 0 0 0 0 0 0 0 1 3 7 14 26 44 71 109 162 233 327 448 603 797 1038 1333 1692 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 3 7 14 26 45 74 116 176 259 372 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 3 7 14 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0