Pagini recente » Istoria paginii runda/123456789101111111 | Istoria paginii runda/dinamica/clasament | Cod sursa (job #407418) | Cod sursa (job #2764243) | Cod sursa (job #2832999)
#include <bits/stdc++.h>
#include <stdlib.h>
using namespace std;
ifstream fin("rucsac.in");
ofstream fout("rucsac.out");
struct obiect {
int w, p;
}obiecte[5005];
int d[5005][10005];
int main() {
int n, g;
fin >> n >> g;
for (int i = 1; i <= n; i ++)
fin >> obiecte[i].w >> obiecte[i].p;
for (int i = 1; i <= n; i ++) {
if (i == 1)
d[i][obiecte[i].w] = obiecte[i].p;
else {
for (int cw = 1; cw <= g; cw ++) {
if (obiecte[i].w <= cw) {
d[i][cw] = max(d[i - 1][cw], d[i - 1][cw - obiecte[i].w] + obiecte[i].p);
}
}
}
}
int Pmax = d[n][g];
fout << Pmax;
return 0;
}