Pagini recente » Monitorul de evaluare | Cod sursa (job #2499576) | Cod sursa (job #985824) | Cod sursa (job #2615080) | Cod sursa (job #979046)
Cod sursa(job #979046)
#include <iostream>
#include <fstream>
using namespace std;
#define MAXN 5010
ifstream f("rucsac.in");
ofstream g("rucsac.out");
struct obiect{
int valoare, greutate;
};
int n, G;
obiect obiecte[MAXN];
int a[MAXN][MAXN];
int valmax;
int main() {
f >> n >> G;
for (int i = 1; i <= n; i++) {
f >> obiecte[i].greutate >> obiecte[i].valoare;
}
for (int i = 1; i <= n; i++) {
if (a[i][obiecte[i].greutate] < obiecte[i].valoare) {
a[i][obiecte[i].greutate] = obiecte[i].valoare;
}
for (int j = obiecte[i].greutate + 1; j <= G; j++) {
if (a[i - 1][j] < a[i - 1][j - obiecte[i].greutate] + obiecte[i].valoare) {
a[i][j] = a[i - 1][j - obiecte[i].greutate] + obiecte[i].valoare;
} else {
a[i][j] = a[i - 1][j];
}
}
}
for (int i = 1; i <= G; i++) {
if (valmax < a[n][i]) {
valmax = a[n][i];
}
}
g << valmax;
return 0;
}