Pagini recente » Cod sursa (job #1027541) | Cod sursa (job #522435) | Cod sursa (job #601726) | Cod sursa (job #1153084) | Cod sursa (job #2698792)
#include <stdio.h>
#define INF 1e9
#define MAX_N 1000
#define MAX_W 5000
inline int min(int a, int b) {
return a < b ? a : b;
}
int d[MAX_W + 1];
int main() {
FILE *fin, *fout;
int n, w, e, c, i;
fin = fopen("energii.in", "r");
fout = fopen("energii.out", "w");
fscanf(fin, "%d%d", &n, &w);
d[0] = 0;
for (i = 1; i <= w; ++i)
d[i] = INF;
while (n--) {
fscanf(fin, "%d%d", &e, &c);
for (i = w; i >= e; --i)
if (d[i - e] != INF)
d[i] = min(d[i], d[i - e] + c);
for (i = e - 1; i >= 0; --i)
d[i] = min(d[i], c);
}
fprintf(fout, "%d\n", d[w] == INF ? -1 : d[w]);
fclose(fin);
fclose(fout);
return 0;
}