Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <iostream>#include <iomanip>#include <vector>#include <cstring>#include <algorithm>using namespace std;struct Candidate {int v,s,id;};const int N = 105;const int B = 1005;int f[N][N][B],g[N][N][B],p[B];int f1[N][N][B],g1[N][N][B],p1[B];int f2[N][N][B],g2[N][N][B],p2[B];void print(vector<Candidate> &cans,int X,int v,vector<int> &res) {int i,j,k;i = cans.size();j = X;k = v;// cout << "i = " << i << " " << X << " " << v << endl;for(;j>0;) {i = g[i][j][k];res.push_back(cans[i-1].id);// cout << "ID = " << cans[i-1].id ;// cout << " " << i << " " << cans[i-1].s << endl;j--;k -= cans[i-1].s;i--;