Pagini recente » Cod sursa (job #531040) | Cod sursa (job #733718) | Cod sursa (job #181784) | Profil M@2Te4i | Cod sursa (job #124124)
Cod sursa(job #124124)
#include <stdio.h>
#define minim(a, b) ((a < b) ? a : b)
#define INF 2000000001
int N, W;
int D[2][5005];
int main(void)
{
int i, j, e, cost, crt, prev;
freopen("energii.in", "r", stdin);
freopen("energii.out", "w", stdout);
scanf("%d", &N);
scanf("%d", &W);
for (i = 1; i <= W; i++)
D[0][i] = INF;
D[0][0] = 0;
for (i = 1; i <= N; i++)
{
scanf("%d %d", &e, &cost);
crt = (i % 2); prev = !crt;
for (j = W; j >= 1; j--)
{
D[crt][j] = INF;
if (j == W)
{
D[crt][j] = D[prev][j];
if (j >= e)
D[crt][j] = minim(D[crt][j], D[prev][j-e]+cost);
}
else
{
D[crt][j] = minim(D[crt][j+1], D[prev][j]);
if (j >= e)
D[crt][j] = minim(D[crt][j], D[prev][j-e]+cost);
}
}
}
if (D[crt][W] == INF)
D[crt][W] = -1;
printf("%d\n", D[crt][W]);
return 0;
}