Pagini recente » Cod sursa (job #3254885) | Cod sursa (job #1765927) | Cod sursa (job #1119441) | Cod sursa (job #2938172) | Cod sursa (job #701515)
Cod sursa(job #701515)
#include<stdio.h>
#include<assert.h>
#include<algorithm>
using namespace std;
const int knmax = 10010;
int sol, no_items, weight, item_weight[knmax / 2], item_profit[knmax / 2], d[knmax];
void read(){
assert(freopen("rucsac.in","r",stdin)!=NULL);
scanf("%d%d",&no_items ,&weight);
for(int i = 1; i <= no_items; ++i)
scanf("%d%d",&item_weight[i] ,&item_profit[i]);
}
void solve(){
int i, j, k = 0;
for(i = 1; i <= no_items; ++i)
for(j = k; j >= 0; --j)
if(j + item_weight[i] <= weight){
if(j + item_weight[i] > k)
k = j + item_weight[i];
d[j + item_weight[i]] = max(d[j + item_weight[i]], d[j] + item_profit[i]);
}
for(j = k; j > 0; --j)
sol = max(sol, d[j]);
}
void write(){
assert(freopen("rucsac.out","w",stdout)!=NULL);
printf("%d",sol);
}
int main(){
read();
solve();
write();
return 0;
}