// UVa 11450 - Wedding shopping #include <iostream> #include <string.h> using namespace std; int main() { int cases; for (cin >> cases; cases; cases--) { int m, c, price[20][20], cant[20]; cin >> m >> c; for (int i = 0; i < c; i++) { cin >> cant[i]; for (int j = 0; j < cant[i]; j++) cin >> price[i][j]; } int T[2][200], R[401]; int now = 0; int b4 = 1; T[now][0] = 1; T[now][1] = 0; for (int i = 0; i < c; i++) { b4 = now; now = (now + 1) % 2; T[now][0] = 0; memset(R, false, sizeof(R)); for (int j = 0; j < cant[i]; j++) { for (int k = 1; k <= T[b4][0]; k++) { int pri = T[b4][k] + price[i][j]; if (pri <= m && !R[pri]) { T[now][++T[now][0]] = pri; R[pri] = true; } } } } int sol = -1; for (int k = 1; k <= T[now][0]; k++) { if (T[now][k] > sol) sol = T[now][k]; } if (sol == -1) cout << "no solution" << endl; else cout << sol << endl; } return 0; }
Wednesday, December 23, 2015
UVa 11450 - Wedding shopping
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment