Pagini recente » Borderou de evaluare (job #1948696) | Cod sursa (job #3001827) | Cod sursa (job #1914900) | Cod sursa (job #2540986) | Cod sursa (job #1504210)
#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 = 1;i <= W;++i)
B[0][i] = 1 << 30;
for (i = 1;i <= G;++i)
for (j = 1;j <= W;++j)
if (E[i] > j)
{
B[i][j] = B[i - 1][j];
}
else
B[i][j] = MIN(B[i - 1][j], B[i - 1][j - E[i]] + C[i]);
if (B[G][W] == 1 << 31)
fprintf(out, "%d", -1);
else
fprintf(out, "%d", B[G][W]);
return 0;
}