Pagini recente » Cod sursa (job #1952205) | Cod sursa (job #213604) | Cod sursa (job #17227) | Cod sursa (job #833257) | Cod sursa (job #1504216)
#include<stdio.h>
#include<stdlib.h>
#define G_MAX 1001
#define W_MAX 5001
FILE *in, *out;
#define MIN(a,b)(a<b?a:b)
int C[G_MAX],E[W_MAX],B[G_MAX+1][W_MAX+1], G, W;
int main()
{
in = fopen("energii.in", "r");
out = fopen("energii.out", "w");
fscanf(in, "%d%d", &G, &W);
int i,j;
for (i = 1;i <= G;++i)
fscanf(in, "%d%d",&E[i],&C[i]);
for (i = 0;i <= G;++i)
for (j = 1;j <= W;j++)
B[i][j] = 1 << 30;
for (i = 1;i <= G;++i)
for (j = 1;j <= W;++j)
if (E[i] > j)
{
B[i][j] = MIN(B[i - 1][j],C[i]);
}
else
B[i][j] = MIN(B[i - 1][j], B[i - 1][j - E[i]] + C[i]);
if (B[G][W] == 1 << 30)
fprintf(out, "%d", -1);
else
fprintf(out, "%d", B[G][W]);
return 0;
}