Pagini recente » Cod sursa (job #2663949) | Cod sursa (job #2228429) | Cod sursa (job #1190676) | Cod sursa (job #124278) | Cod sursa (job #764506)
Cod sursa(job #764506)
#include <stdio.h>
#include <fstream>
using namespace std;
int n, g_max;
int pr[5010];
int gr[5010];
int a[5010][10020];
void citeste() {
ifstream f("rucsac.in");
f >> n >> g_max;
for (int i = 0; i < n; i++) {
f >> gr[i] >> pr[i];
}
f.close();
}
int max(int a, int b) {
return (a > b ? a : b);
}
int rezolva() {
// Completez prima linie resp coloana
for (int i = 0; i <= g_max; i++) {
if (gr[0] <= i) {
a[0][i] = pr[0];
} else {
a[0][i] = 0;
}
}
// Completez restul matricei
for (int i = 1; i < n; i++) {
for (int j = 1; j <= g_max; j++) {
if (gr[i] < g_max) {
a[i][j] = max(a[i-1][j], a[i-1][j - gr[i]] + pr[i]);
} else {
a[i][j] = a[i-1][j];
}
}
}
return a[n-1][g_max];
}
void afiseaza(int rez) {
ofstream g("rucsac.out");
g << rez;
g.close();
}
int main()
{
int rez;
citeste();
rez = rezolva();
afiseaza(rez);
}