Pagini recente » Cod sursa (job #3364726) | Cod sursa (job #3367731) | Cod sursa (job #3367625) | Cod sursa (job #3367512) | Cod sursa (job #3367629)
#include <stdio.h>
#define K 10000
#define INF 500000001
int profit[K+1];
int max(int x, int y) {
return (x > y ? x : y);
}
int main(void) {
FILE *fin = fopen("rucsac.in", "r");
int n, k;
fscanf(fin, "%d%d", &n, &k);
for (int j = 1; j <= k; j++) {
profit[j] = -INF;
}
for (int i = 0; i < n; i++) {
int g_i, p_i;
fscanf(fin, "%d%d", &g_i, &p_i);
for (int j = k; j >= g_i; j--) {
if (profit[j-g_i] + p_i > profit[j]) {
profit[j] = profit[j-g_i] + p_i;
}
}
}
fclose(fin);
FILE *fout = fopen("rucsac.out", "w");
int profit_max = -INF;
for (int j = 1; j <= k; j++) {
profit_max = max(profit_max, profit[j]);
}
fprintf(fout, "%d\n", profit_max);
fclose(fout);
return 0;
}