Pagini recente » Cod sursa (job #1242165) | Cod sursa (job #1225728) | Cod sursa (job #1239343) | Cod sursa (job #3329106) | Cod sursa (job #1039866)
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#define MAX_WEIGHT 10001
#define MAX_N 5001
using namespace std;
typedef struct object{
int weight;
int profit;
} OBJECT;
int prevv[MAX_WEIGHT];
int current[MAX_WEIGHT];
OBJECT objects[MAX_N];
int main()
{
freopen("rucsac.in", "r", stdin);
freopen("rucsac.out", "w", stdout);
int n,g;
scanf("%d %d", &n, &g);
for (int i=0; i<n; i++){
OBJECT o;
scanf("%d %d", &o.weight, &o.profit);
objects[i] = o;
}
//solve
for (int i=0; i<n; i++){
OBJECT currentObject = objects[i];
for (int j=currentObject.weight; j<=g; j++){
if (prevv[j] > prevv[j-currentObject.weight] + currentObject.profit){
current[j] = prevv[j];
} else {
current[j] = prevv[j-currentObject.weight] + currentObject.profit;
}
}
for (int j=0; j<=g; j++){
prevv[j] = current[j];
}
}
printf("%d", current[g]);
return 0;
}