Pagini recente » Monitorul de evaluare | Cod sursa (job #1051939) | Cod sursa (job #3155878) | Cod sursa (job #1386172) | Cod sursa (job #1747822)
#include <cstdio>
using namespace std;
int w[5001], p[5001], d[10001];
int rucsac(int n, int s){
int i, j, max = 0;
for (i = 1; i <= n; i ++){
for (j = s - w[i]; j >= 0; j --){
if (j + w[i] <= s){
if (d[j + w[i]] < p[i] + d[j]){
d[j + w[i]] = p[i] + d[j];
if (p[i] + d[j] > max)
max = p[i] + d[j];
}
}
}
}
return max;
}
int main(){
freopen("rucsac.in", "r", stdin);
freopen("rucsac.out", "w", stdout);
int n, s, i;
scanf("%d%d", &n, &s);
for (i = 1; i <= n; i ++)
scanf("%d%d", &w[i], &p[i]);
printf("%d\n", rucsac(n, s));
return 0;
}