Pagini recente » Cod sursa (job #1097840) | Cod sursa (job #2514515) | Cod sursa (job #2192837) | Cod sursa (job #1818765) | Cod sursa (job #903430)
Cod sursa(job #903430)
#include <cstdio>
const int MAX_N(5001);
const int MAX_G(10001);
struct object
{
int w;
int p;
} v [MAX_N];
int dp [MAX_G];
int n, g, optimal;
inline void read (void)
{
std::freopen("rucsac.in","r",stdin);
std::scanf("%d %d",&n,&g);
for (int i(1) ; i <= n ; ++i)
std::scanf("%d %d",&v[i].w,&v[i].p);
std::fclose(stdin);
}
inline void print (void)
{
std::freopen("rucsac.out","w",stdout);
std::printf("%d\n",optimal);
std::fclose(stdout);
}
inline int max (int a, int b)
{
return a > b ? a : b;
}
inline void dynamic (void)
{
int i, j;
for (i = 1 ; i <= n ; ++i)
for (j = g - v[i].w ; j >= 0 ; --j)
dp[j + v[i].w] = max(dp[j + v[i].w],dp[j] + v[i].p);
for (i = 1 ; i <= g ; ++i)
optimal = max(optimal,dp[i]);
}
int main (void)
{
read();
dynamic();
print();
return 0;
}