Pagini recente » Cod sursa (job #598225) | Cod sursa (job #377887) | Cod sursa (job #26546) | Cod sursa (job #2579368) | Cod sursa (job #2930116)
#include <cstdio>
#include <iostream>
using namespace std;
FILE *fin, *fout;
const int NMAX = 5000;
int w[NMAX + 5], p[NMAX + 5];
int dp[NMAX + 5][10005];
int main()
{
fin = fopen("rucsac.in", "r");
fout = fopen("rucsac.out", "w");
int n, g;
fscanf(fin, "%d%d", &n, &g);
for(int i = 1; i <= n; i++)
fscanf(fin, "%d%d", &w[i], &p[i]);
for(int i = 0; i <= g; i++)
dp[0][g] = 0;
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= g; j++)
{
if(j < w[i])
{
dp[i][j] = dp[i - 1][j];
continue;
}
dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - w[i]] + p[i]);
}
}
fprintf(fout, "%d", dp[n][g]);
fclose(fin);
fclose(fout);
return 0;
}