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;}