Pagini recente » Cod sursa (job #631307) | Cod sursa (job #1153687) | Cod sursa (job #1690646) | Cod sursa (job #2962825) | Cod sursa (job #1020783)
#include <cstdio>
using namespace std;
const int Nmax = 1005;
const int Gmax = 5005;
const int oo = 10005;
inline int min(int x, int y) {
if (x > y)
return y;
return x;
}
int main() {
int G, W, i, cw;
int D[Nmax][Gmax];
int EG[Nmax], CG[Nmax];
freopen("energii.in", "r", stdin);
freopen("energii.out", "r", stdout);
scanf("%d%d", &G, &W);
for (i = 1; i <= G; ++i)
scanf("%d%d", &EG[i], &CG[i]);
for (i = 0; i <= G; ++i)
for (cw = 0; cw <= W; ++cw)
D[i][cw] = oo;
for (i = 1; i <= G; ++i) {
for (cw = 1; cw <= W; ++cw) {
D[i][cw] = D[i-1][cw];
if (cw == EG[i]) {
D[i][cw] = min(D[i][cw], CG[i]);
}
if (cw > EG[i]) {
if (D[i-1][cw - EG[i]] < oo)
D[i][cw] = min(D[i][cw], D[i-1][cw - EG[i]] + CG[i]);
}
}
}
if (D[G][W] == oo)
printf("%d", -1);
else
printf("%d", D[G][W]);
return 0;
}