Pagini recente » Cod sursa (job #2352499) | Cod sursa (job #2507589) | Cod sursa (job #946853) | Cod sursa (job #1481764) | Cod sursa (job #1089247)
#include <iostream>
#include <iomanip>
#include <fstream>
//#define DEBUG true
#define NRO 5005
#define GRMAX 10005
using namespace std;
ifstream fin("rucsac.in");
ofstream fout("rucsac.out");
int w[NRO],p[NRO],G, n, cc[GRMAX], cp[GRMAX];
int main(){
fin >> n >> G;
for(int i=1;i<= n;i++)
fin >> w[i] >> p[i];
for(int j=0;j<=G;j++)
cp[j] = 0; // cu zero obiecte castigul este zero, indiferent de greutatea j
for(int i=1;i<=n;i++)
{
cc[0] = 0; // cu greaute zero castigul este zero, indiferent de numarul de obiecte
for(int j=1;j<=G;j++)
{
cc[j] = cp[j]; // nu punem obiectul i in rucsac
if(w[i]<=j) // obiectul i incape in rucsac
if(cc[j] < cp[j-w[i]] + p[i])
cc[j] = cp[j-w[i]] + p[i];
}
for(int j=0 ; j<=G ; j++)
cp[j] = cc[j];
}
fout <<cc[G];
return 0;
}