Pagini recente » Cod sursa (job #2344637) | Cod sursa (job #1932974) | Cod sursa (job #2694303) | Cod sursa (job #636316) | Cod sursa (job #1780570)
#include<stdio.h>
FILE *in, *out;
int max(int a, int b) {
if(a > b) {
return a;
}
return b;
}
struct obiecte
{
int w, p;
};
int g[10001];
obiecte v[5000];
int main ()
{
int n, wt;
in = fopen("rucsac.in", "r");
out = fopen("rucsac.out", "w");
fscanf(in, "%d%d", &n, &wt);
for(int i = 0; i < n; i++) {
fscanf(in, "%d%d", &v[i].w, &v[i].p);
}
g[0] = 1;
for(int i = 0; i < n; i++) {
for(int j = wt; j >= 0; j--) {
if(g[j] != 0) {
if(j + v[i].w <= wt) {
g[j + v[i].w] = max(g[j + v[i].w], g[j] + v[i].p);
}
}
}
}
int maxim;
for(int i = 0; i <= wt; i++) {
maxim = max(maxim, g[i]);
}
fprintf(out, "%d\n", maxim - 1);
fclose(in);
fclose(out);
return 0;
}