classSolution { public: staticconstint maxn = 1e2 + 50, mod = 1e9 + 7; int n; longlong f[maxn][maxn]; intprofitableSchemes(int m, int minProfit, vector<int>& group, vector<int>& profit){ n = group.size(); memset(f, 0, sizeof(f)); f[0][0] = 1; for (int i = 0; i < n; ++i) { for (int j = m; j >= 0; --j) { for (int k = 0; k <= minProfit; ++k) { if (j + group[i] <= m) { int x = min(minProfit, k + profit[i]); f[j + group[i]][x] = (f[j + group[i]][x] + f[j][k]) % mod; } } } } longlong sum = 0; for (int i = 0; i <= m; ++i) sum = (sum + f[i][minProfit]) % mod; return sum; } };