CSES - Shared codeLink to this code: https://cses.fi/paste/ea7be550e17f258fb775bb/
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n, x;
cin >> n >> x;
const int M = 1000000007;
vector<int> coins(n);
for (int i = 0;i < n;++i) cin >> coins[i];
vector<long long> dp(x + 1);
dp[0] = 1;
for (int coin : coins) {
for (int i = coin;i < x + 1;++i) {
dp[i] = (dp[i] + dp[i - coin]) % M;
}
}
cout << dp[x] << endl;
}