Pagini recente » Cod sursa (job #972085) | Cod sursa (job #1349085) | Cod sursa (job #1724097) | Cod sursa (job #2814978) | Cod sursa (job #2854459)
#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 (2, vector<int>(capacitateRucsac + 1));
int obiectCurent = 1, obiectAnterior;
for(int obiect = 1; obiect <= nrObiecte; obiect ++) {
obiectCurent = !obiectCurent;
obiectAnterior = !obiectCurent;
for(int capacitate = 1; capacitate <= capacitateRucsac; capacitate ++) {
proces[obiectCurent][capacitate] = proces[obiectAnterior][capacitate];
if(capacitate >= greutateObiect[obiect])
proces[obiectCurent][capacitate] = max(proces[obiectCurent][capacitate], proces[obiectAnterior][capacitate - greutateObiect[obiect]] + valoareObiect[obiect]);
}
}
fout << proces[1][capacitateRucsac];
return 0;
}