Pagini recente » Cod sursa (job #1780123) | Cod sursa (job #3170417) | Cod sursa (job #75197) | Cod sursa (job #1453792) | Cod sursa (job #1144225)
#include <cstdio>
using namespace std;
int a[5005][10005], G[5005], C[5005], n, GMax;
void read () {
FILE *in = fopen ("rucsac.in", "r");
fscanf (in, "%d%d", &n, &GMax);
for (int i = 1; i <= n; ++i)
fscanf (in, "%d%d", &G[i], &C[i]);
//for (int i = 1; i <= n; ++i)
//fscanf (in, "%d", &C[i]);
fclose (in);
}
int max (int a, int b) {
if (a > b)
return a;
else return b;
}
void solve () {
for (int i = 1; i <= n; ++i)
for (int j = 0; j <= GMax; ++j)
if (G[i] > j)
a[i][j] = a[i - 1][j];
else a[i][j] = max (a[i - 1][j], C[i] + a[i - 1][j - G[i]]);
}
void write () {
FILE *out = fopen ("rucsac.out", "w");
fprintf (out, "%d", a[n][GMax]);
fclose (out);
}
int main()
{
read ();
solve ();
write ();
return 0;
}