Pagini recente » Cod sursa (job #1755707) | Cod sursa (job #1242900) | Cod sursa (job #1886970) | Cod sursa (job #746269) | Cod sursa (job #2469367)
/*
`-/oo+/- ``
.oyhhhhhhyo.`od
+hhhhyyoooos. h/
+hhyso++oosy- /s
.yoooossyyo:``-y`
..----.` ``.-/+:.`
`````..-::/.
`..```.-::///`
`-.....--::::/:
`.......--::////:
`...`....---:::://:
`......``..--:::::///:`
`---.......--:::::////+/`
----------::::::/::///++:
----:---:::::///////////:`
.----::::::////////////:-`
`----::::::::::/::::::::-
`.-----:::::::::::::::-
...----:::::::::/:-`
`.---::/+osss+:`
``.:://///-.
*/
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <vector>
#include <stack>
#include <queue>
#include <deque>
#include <map>
#include <cmath>
#define INF 0x3f3f3f3f
#define MIN(a, b) (((a) < (b)) ? (a) : (b))
#define MAX(a, b) (((a) < (b)) ? (b) : (a))
using namespace std;
const int GMAX = 10000;
const int N = 5000;
int dp[5 + GMAX];
int p[5 + N], g[5 + N];
int main()
{
freopen("rucsac.in","r",stdin);
freopen("rucsac.out","w",stdout);
int n, gt, i, j, sol = 0;
scanf("%d%d", &n, >);
for(i = 1; i <= n; i++) scanf("%d%d", &g[i], &p[i]);
for(i = 1; i <= n; i++){
for(j = gt - g[i] ; j >= 0; j--){
dp[j + g[i]] = MAX(dp[j + g[i]], dp[j] + p[i]);
sol = MAX(sol, dp[j + g[i]]);
}
}
printf("%d\n", sol);
return 0;
}