/* Yumminess by Raymond Le Grand */ #include #include #include using namespace std; struct jar{ int w; int y; int inside; //in knapsack? }; bool jCompW(jar i, jar j){ return (i.w jlist; vector > tbl; while(true){ cin>>wMax>>nJars; if((wMax==0)&&(nJars==0))break; for (int i=0;i>ajar.w>>ajar.y; ajar.inside=0; jlist.push_back(ajar); } //resize table tbl.resize(nJars+1); for (int i=0;iw){ tbl[j][w]=tbl[j-1][w]; }else{ tbl[j][w]=max(tbl[j-1][w],jlist[j-1].y+tbl[j-1][w-jlist[j-1].w]); } } } //first part of answer: cout<0)&&(w>0)){ if (tbl[j][w]!=tbl[j-1][w]){ w=w-jlist[j-1].w; jlist[j-1].inside=1; j--; }else{ j--; } } j=0; while(j