Pagini recente » Cod sursa (job #907634) | Cod sursa (job #1679288) | Cod sursa (job #3148673) | Cod sursa (job #735) | Cod sursa (job #30759)
Cod sursa(job #30759)
#include <stdio.h>
#define infinit 32767
#define nmax 1001
#define vmax 9001
int G, W, i, g, emax, minim, EG[nmax], CG[nmax];
int min[nmax][vmax];
int main(void)
{
freopen("energii.in", "r", stdin);
freopen("energii.out", "w", stdout);
scanf("%d%d", &G, &W);
for (i = 1; i <= G; ++i)
{
scanf("%d%d", &EG[i], &CG[i]);
emax += EG[i];
}
if (emax < W)
{
printf("-1\n");
return 0;
}
else
{
for (g = 1; g <= emax; ++g) min[1][g] = infinit;
min[1][EG[1]] = CG[1];
for (g = 1; g <= W; ++g)
for (i = 2; i <= G; ++i)
{
min[i][g] = min[i - 1][g];
if (g - EG[i] >= 0 && min[i - 1][g - EG[i]] != infinit)
if (CG[i] + min[i - 1][g - EG[i]] < min[i][g])
min[i][g] = min[i - 1][g - EG[i]] + CG[i];
}
}
for (minim = infinit, g = W; g <= emax; ++g)
if (minim > min[G][g]) minim = min[N][g];
printf("%d\n", minim);
return 0;
}