Pagini recente » Cod sursa (job #270136) | Cod sursa (job #2685837) | Cod sursa (job #1924262) | Cod sursa (job #571584) | Cod sursa (job #1020799)
#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, l;
int D[2][Gmax];
int EG[Nmax], CG[Nmax];
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]);
for (i = 0; i < 2; ++i)
for (cw = 1; cw <= W; ++cw)
D[i][cw] = oo;
for (i = 1, l = 0; i <= G; ++i, l = 1-l) {
for (cw = 1; cw <= W; ++cw) {
D[1-l][cw] = D[l][cw];
if (cw >= EG[i]) {
D[1-l][cw] = min(D[1-l][cw], D[l][cw - EG[i]] + CG[i]);
}
//printf("%d ", D[1-l][cw]);
}
//printf("\n");
}
if (D[l][W] >= oo)
printf("%d", -1);
else
printf("%d", D[l][W]);
return 0;
}