Pagini recente » Cod sursa (job #921818) | Cod sursa (job #777625) | Cod sursa (job #1134265) | Cod sursa (job #2809845) | Cod sursa (job #1549040)
#include <iostream>
#include <cstdio>
using namespace std;
const int N_max = 5000;
const int G_max = 10000;
int profit[G_max+1];
int g[N_max+1], p[G_max+1];
int N,G;
int Profit_Max;
int main()
{
freopen("rucsac.in", "r", stdin);
freopen("rucsac.out", "w", stdout);
int i, j;
scanf("%d %d", &N, &G);
for(i = 1; i <= N; i++) scanf("%d %d", &g[i], &p[i]);
for(i = 1; i <= G; i++) profit[i] = -1;
profit[0] = 0;
for(i = 1; i <= N; i++)
for(j = G; j >= g[i]; j--)
if(profit[j] < profit[j - g[i]] + p[i] && profit[j - g[i]] != -1)
{
profit[j] = profit[j - g[i]] + p[i];
if(Profit_Max < profit[j]) Profit_Max = profit[j];
}
printf("%d", Profit_Max);
return 0;
}