Pagini recente » Cod sursa (job #469582) | Cod sursa (job #2075674) | Cod sursa (job #1723586) | Cod sursa (job #1247221) | Cod sursa (job #628912)
Cod sursa(job #628912)
#include <stdio.h>
#define NMAX 1005
#define WMAX 5005
#define INF (1<<20)
int W[NMAX], C[NMAX], D[NMAX][WMAX];
int n, Emax;
inline int min(int a, int b)
{
return (a<b)?a:b;
}
int main()
{
freopen("energii.in", "r", stdin);
freopen("energii.out", "w", stdout);
int i, cw;
scanf("%d %d", &n, &Emax);
for (i=1; i<=n; ++i)
scanf("%d %d", &W[i], &C[i]);
for (i=0; i<=n; ++i)
for (cw=1; cw<=Emax; ++cw)
D[i][cw] = INF;
for (i=1; i<=n; ++i)
for (cw=1; cw<=Emax; ++cw) {
if (W[i] <= cw)
D[i][cw] = min(D[i-1][cw], D[i-1][cw-W[i]]+C[i]);
else
D[i][cw] = min(D[i-1][cw], C[i]);
}
if (D[n][Emax] == INF)
printf("-1\n");
else
printf("%d\n", D[n][Emax]);
return 0;
}