Pagini recente » Cod sursa (job #3322560) | Cod sursa (job #3302533) | Cod sursa (job #891336) | Cod sursa (job #2539595) | Cod sursa (job #1039865)
#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 prev[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 (prev[j] > prev[j-currentObject.weight] + currentObject.profit){
current[j] = prev[j];
} else {
current[j] = prev[j-currentObject.weight] + currentObject.profit;
}
}
for (int j=0; j<=g; j++){
prev[j] = current[j];
}
}
printf("%d", current[g]);
return 0;
}