Cod sursa(job #2480773)
| Utilizator | Data | 26 octombrie 2019 10:00:49 | |
|---|---|---|---|
| Problema | Problema rucsacului | Scor | 50 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.55 kb |
#include <bits/stdc++.h>
#define MOD 194767
using namespace std;
ifstream in("rucsac.in");
ofstream out("rucsac.out");
struct Obiect
{
int w, p;
}O[5010];
int n, g, sol[5010][5010], gm;
int main()
{
in >> n >> g;
for(int i = 1;i <= n;i++)
in >> O[i].w >> O[i].p;
for(int i = 1;i <= n;i++)
for(int gm = 0;gm <= g;gm++)
{
if(gm >= O[i].w) sol[i][gm] = max(sol[i - 1][gm], sol[i - 1][gm - O[i].w] + O[i].p);
else sol[i][gm] = sol[i - 1][gm];
}
out << sol[n][g];
return 0;
}
