#include<bits/stdc++.h>
#define ll long long
#define MAXN (int)1e3+10
using namespace std;
ll N, V;
struct node {
ll w, v, s;
} a;
//int max(int a, int b) {
// if (a > b) {
// return a;
// }
// return b;
//}
struct node2 {
ll w, v;
}b;
int main() {
cin >> N >> V;
vector<node> nodes;
vector<node2> new_nodes;
for (int i = 1; i <= N; i++) {
cin >> a.w >> a.v >> a.s;
if (a.s == 0) {
a.s = V / a.v;
}
nodes.push_back(a);
}
//对每一项进行二进制拆分
for (node i : nodes) {
int n = i.s;
int num = 1;
while (num < n) {
b.v = i.v * num;
b.w = i.w * num;
n -= num;
num *= 2;
new_nodes.push_back(b);
}
b.w = i.w * n;
b.v = i.v * n;
new_nodes.push_back(b);
}
for (node2 i : new_nodes) {
cout << i.v << " " << i.w << endl;
}
//进行动态规划,使用多重背包
int dp[2][70];
memset(dp, 0, sizeof(dp));
for (int i = 0; i < new_nodes.size(); i++) {
for (int j = 0; j <= V; j++) {
if (j - new_nodes[i].w < 0) {
dp[i % 2][j] = dp[(i - 1) % 2][j];
}
else {
dp[i % 2][j] = max(dp[(i - 1) % 2][j], dp[(i - 1) % 2][j - new_nodes[i].w]+new_nodes[i].v);
}
}
}
}
为什么这里面的max函数用不了