Pagini recente » Cod sursa (job #1773201) | Cod sursa (job #2374769) | Cod sursa (job #826746) | Arhiva de probleme | Cod sursa (job #2854387)
#include <iostream>
#include <fstream>>
#include <vector>
using namespace std;
ifstream fin("rucsac.in");
ofstream fout("rucsac.out");
int main()
{
int nrObiecte, capacitateRucsac;
fin >> nrObiecte >> capacitateRucsac;
vector <int> greutateObiect(nrObiecte + 1), valoareObiect(nrObiecte + 1);
for(int i = 1; i <= nrObiecte; i ++)
fin >> greutateObiect[i] >> valoareObiect[i];
vector <vector<int> > proces (nrObiecte + 1, vector<int>(capacitateRucsac + 1));
for(int i = 1; i <= nrObiecte; i ++) {
for(int j = 1; j <= capacitateRucsac; j ++) {
proces[i][j] = proces[i - 1][j];
if(j >= greutateObiect[i])
proces[i][j] = max(proces[i - 1][j], proces[i - 1][j - greutateObiect[i]] + valoareObiect[i]);
}
}
fout << proces[nrObiecte][capacitateRucsac];
return 0;
}