题目链接:https://ac.nowcoder.com/acm/contest/12794/E
#include <iostream>
#include <cstdio>
#include <stdio.h>
#include <map>
#include <cmath>
#include <utility>
#include <cstring>
#include <string.h>
#include <algorithm>
using namespace std;
#define ll long long
const int maxn = 200005;
const int INF = 0x3f3f3f3f;
int m[maxn][4] = {0};
int c[maxn][4] = {0};
int dp[maxn] = {0};
void init() {
memset(m,0,sizeof(m));
memset(c,0,sizeof(c));
memset(dp,0,sizeof(dp));
}
int main() {
int cnt;
cin >> cnt;
for(int i = 1; i <= cnt; ++i) {
init();
int d,b;
cin >> d >> b;
for(int i = 0; i < d; ++i) {
for(int j = 0; j < 4; ++j) {
cin >> m[i][j] >> c[i][j];
}
}
for(int i = 0; i < d; ++i) {
for(int j = b; j >= 0; --j) {
for(int k = 0; k < 4; ++k) {
if(j >= m[i][k])
dp[j] = max(dp[j], dp[j-m[i][k]] + c[i][k]);
}
}
}
cout << "Budget #" <<i << ": Maximum of "<<dp[b]<<" lives saved." << endl << endl;
}
}