Pagini recente » Cod sursa (job #2035441) | Cod sursa (job #263338) | Cod sursa (job #1937043) | Cod sursa (job #2794429) | Cod sursa (job #2371196)
#include <bits/stdc++.h>
using namespace std;
const int NMAX = 5004;
const int GMAX = 10004;
int W[NMAX], P[NMAX];
int Optim[GMAX];
int N, G;
int read(){
scanf("%d %d", &N, &G);
for(int i = 1; i <= N; i++)
scanf("%d %d", &W[i], &P[i]);
}
int afisare(){
for(int i=1; i<12; i++){
printf("%d ", Optim[i]);
}
printf("\n");
}
int main(){
freopen("rucsac.in", "r", stdin);
freopen("rucsac.out", "w", stdout);
read();
Optim[0] = 0;
int sol = 0;
for(int i = 1; i <= N; ++i){
for(int j = G - W[i]; j >= 0; --j){
if(Optim[j+W[i]] < Optim[j] + P[i]){
Optim[j+W[i]] = Optim[j] + P[i];
if( Optim[j+W[i]] > sol)
sol = Optim[j+W[i]];
}
}
}
printf("%d", sol);
return 0;
}