Pagini recente » Cod sursa (job #2795369) | Cod sursa (job #2371862) | Cod sursa (job #2295794) | Cod sursa (job #1907270) | Cod sursa (job #1605450)
#include <iostream>
#include <string.h>
#include <algorithm>
using namespace std;
struct gen {
int e;
int c;
};
gen best[5010];
int g, w;
int main (void) {
freopen("energii.in", "r", stdin);
freopen("energii.out", "w", stdout);
scanf("%d", &g);
scanf("%d", &w);
//init
for (int i = 1; i <= w; ++i) {
best[i].e = 0;
best[i].c = 9999999;
}
//read
gen elem;
int m = 999999;
for (int j = 0; j < g; ++j) {
scanf("%d %d", &elem.e, &elem.c);
if (elem.e >= w) {
m = min(m, elem.c);
} else {
for (int i = w; i >=1 ; --i) {
if (best[i].e < i) {
best[i].e += elem.e;
best[i].c += elem.c;
} else {
best[i].c = min(best[i].c, best[i - elem.e].c + elem.c);
}
}
}
}
if (m == 999999 && best[w].e < w) {
printf("-1");
} else {
printf("%d", min(best[w].c, m));
}
return 0;
}