Pagini recente » Cod sursa (job #183341) | Cod sursa (job #2979120) | Cod sursa (job #996136) | Cod sursa (job #2832350) | Cod sursa (job #1355103)
#include <iostream>
#include <fstream>
#define nmax 5005
#define gmax 10005
using namespace std;
struct object {
int weight, profit;
} O[nmax];
int Curr[gmax], Prev[gmax];
int main() {
ifstream fi("rucsac.in");
ofstream fo("rucsac.out");
int N, G;
fi >> N >> G;
for (int i = 1; i <= N; i++)
fi >> O[i].weight >> O[i].profit;
for (int i = 1; i <= N; i++) {
for (int j = 1; j <= G; j++) {
if (j >= O[i].weight)
Curr[j] = max(Prev[j], O[i].profit + Prev[j - O[i].weight]);
else
Curr[j] = Prev[j];
}
if (i < N)
for (int j = 1; j <= G; j++) Prev[j] = Curr[j];
}
fo << Curr[G] << "\n";
fi.close();
fo.close();
return 0;
}