aboutsummaryrefslogtreecommitdiff
path: root/03_dynamic_programming/coin_combinations_ii_1636.cpp
diff options
context:
space:
mode:
Diffstat (limited to '03_dynamic_programming/coin_combinations_ii_1636.cpp')
-rw-r--r--03_dynamic_programming/coin_combinations_ii_1636.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/03_dynamic_programming/coin_combinations_ii_1636.cpp b/03_dynamic_programming/coin_combinations_ii_1636.cpp
new file mode 100644
index 0000000..75642da
--- /dev/null
+++ b/03_dynamic_programming/coin_combinations_ii_1636.cpp
@@ -0,0 +1,28 @@
1#include <iostream>
2#include <map>
3#include <vector>
4
5static constexpr int mod = 1000000007;
6static constexpr int X = 1000001;
7
8int main() {
9 int n, x;
10 std::cin >> n >> x;
11 std::vector<int> c(n);
12 for (int i = 0; i < n; i++)
13 std::cin >> c[i];
14
15 std::vector<std::vector<int>> a(n, std::vector<int>(X, 0));
16 for (int i = 0; i < (int)c.size(); i++) a[i][0] = 1;
17 for (int j = c.back(); j <= x; j += c.back()) a[c.size()-1][j] = 1;
18 for (int i = c.size()-2; i >= 0; i--) {
19 for (int j = 1; j <= x; j++) {
20 a[i][j] = a[i+1][j];
21 if (j >= c[i]) {
22 a[i][j] += a[i][j-c[i]];
23 a[i][j] %= mod;
24 }
25 }
26 }
27 std::cout << a[0][x] << "\n";
28}

Generated with cgit - Back to sebastiano.tronto.net