Pagini recente » Cod sursa (job #1983279) | Cod sursa (job #1511479) | Cod sursa (job #101133) | Cod sursa (job #467699) | Cod sursa (job #913970)
Cod sursa(job #913970)
#include <cstdio>
#define max(a,b) ((a>b)?a:b)
#define nMax 5010
#define gMax 10010
using namespace std;
struct lucruri{
int val;
int g;
}a[nMax];
int n;
int g;
int s1[gMax];
int s2[gMax];
void citire(){
scanf("%d %d", &n, &g);
for(int i = 0; i < n; ++ i){
scanf("%d %d", &a[i].g, &a[i].val);
}
}
void copiere(){
for(int i = 1; i <= g; ++ i){
s1[i] = s2[i];
}
}
void rez(){
for(int i = 0; i < n; ++ i){
for(int j = a[i].g; j <= g; ++ j){
s2[j] = max(s1[j], a[i].val + s1[j - a[i].g]);
}
copiere();
}
printf("%d\n", s1[g]);
}
int main()
{
freopen("rucsac.in", "r", stdin);
freopen("rucsac.out", "w", stdout);
citire();
rez();
return 0;
}