fork download
  1. /**
  2.  * /\_/\
  3.  * (= ._.)
  4.  * / >01<\
  5.  *
  6. */
  7.  
  8. #include<bits/stdc++.h>
  9. #define task "young"
  10. #define int long long
  11. #define ii pair<int, int>
  12. #define ll long long
  13. #define ld long double
  14. #define fi first
  15. #define se second
  16. #define faster ios_base::sync_with_stdio(NULL); cin.tie(NULL);
  17. #define F if(fopen(task".inp","r")){ freopen(task".inp","r",stdin); freopen(task".out","w",stdout); }
  18. using namespace std;
  19.  
  20. const int Q = 1e6 + 21;
  21. const int N = 1e3 + 21;
  22. const int mod = 1e9 + 7;
  23. const int inf = 1e9 + 7;
  24. const int dx[] = {0, 0, 1, -1};
  25. const int dy[] = {1, -1, 0, 0};
  26.  
  27. int k;
  28. int n;
  29.  
  30. int r[16];
  31. int a[16][16];
  32.  
  33. int ans;
  34.  
  35. void cal(int id, int row, int last)
  36. {
  37. if(id > k)
  38. {
  39. ans++;
  40. return;
  41. }
  42.  
  43. if(row > r[id])
  44. {
  45. cal(id + 1, 1, 0);
  46. return;
  47. }
  48.  
  49. for(int i = last; i <= n; i++)
  50. {
  51. a[id][row] = i;
  52.  
  53. if(a[id - 1][row] < i)
  54. cal(id, row + 1, i);
  55. }
  56. }
  57.  
  58. void solve()
  59. {
  60. cin >> k;
  61.  
  62. for(int i = 1; i <= k; i++)
  63. cin >> r[i];
  64.  
  65. cin >> n;
  66.  
  67. cal(1, 1, 0);
  68.  
  69. cout << ans;
  70. cout << '\n';
  71. }
  72.  
  73. signed main()
  74. {
  75. faster;
  76. F;
  77.  
  78. int test = 1;
  79.  
  80. // cin >> test;
  81.  
  82. while(test--)
  83. {
  84. solve();
  85. }
  86.  
  87. cerr << "Time elapsed: " << (1.0 * clock() / CLOCKS_PER_SEC) << " s.\n";
  88.  
  89. return 0;
  90. }
  91.  
Success #stdin #stdout #stderr 0.01s 5312KB
stdin
Standard input is empty
stdout
1
stderr
Time elapsed: 0.005451 s.