Pagini recente » Cod sursa (job #1761764) | Cod sursa (job #277740) | Monitorul de evaluare | Cod sursa (job #1604792) | Cod sursa (job #2224949)
#include <cstdio>
#include <algorithm>
#define Gmax 10005
#define NRmax 5005
using namespace std;
int nr_obiecte,dp[Gmax], greutate_max;
struct s
{
int g, val;
} obiecte[NRmax];
void dinamica()
{
for(int i=1; i<=nr_obiecte; i++)
{
//dp[i]=max(dp[i], obiecte[i].val);
for(int j=greutate_max; j>=obiecte[i].g; j--)
{
// if(j-obiecte[i].g < 0)
// continue;
dp[j]=max(dp[j], dp[j-obiecte[i].g]+obiecte[i].val);
}
}
}
int main()
{
freopen("rucsac.in", "r", stdin);
freopen("rucsac.out", "w", stdout);
scanf("%d %d", &nr_obiecte, &greutate_max);
for(int i=1; i<=nr_obiecte; i++)
{
scanf("%d %d", &obiecte[i].g, &obiecte[i].val);
}
dinamica();
int nr=greutate_max;
while(dp[nr] == 0)
nr--;
printf("%d", dp[nr]);
return 0;
}