rt,两个都错,代码如下:
#include <bits/stdc++.h>
using namespace std;
int n, m, k, f[1205][1205], v1[1204], v2[1210], c[2104], t[2104];
string ans[1205][1205];
int main() {
cin >> m >> k >> n;
for (int i = 1; i <= n; i++)
cin >> v1[i] >> v2[i] >> c[i], t[i] = i;
for (int i = n; i >= 1; i--) {
for (int j = m; j >= v1[i]; j--) {
for (int o = k; o >= v2[i]; o--) {
/* if (f[j - v1[i]][o - v2[i]] + c[i] == f[j][o]
&& ans[j - v1[i]][o - v2[i]] + char(t[i]) < ans[j][o])
cout << endl << ":" << t[i] << " " << j << " " << o << endl;*/
if (f[j - v1[i]][o - v2[i]] + c[i] > f[j][o] || (f[j - v1[i]][o - v2[i]] + c[i] == f[j][o]
&& ans[j - v1[i]][o - v2[i]] + char(t[i]) < ans[j][o]) )
f[j][o] = max(f[j][o], c[i] + f[j - v1[i]][o - v2[i]]), ans[j][o] = ans[j - v1[i]][o - v2[i]] + char(t[i]);
}
}
}
cout << f[m][k] << "\n";
for (int i = ans[m][k].size() - 1; i >= 0 ; i--)
cout << int(ans[m][k][i]) << " ";
return 0;
}