Pagini recente » Cod sursa (job #96193) | Cod sursa (job #2893322) | Cod sursa (job #1448758) | Cod sursa (job #899713) | Cod sursa (job #2050083)
#include <iostream>
#include <fstream>
#define IN 2000000000
using namespace std;
ifstream fin("energii.in");
ofstream fout("energii.out");
int cost[5001], energie[5001];
int dyn[10005];
int nrg, needed, etotal;
int main() {
fin >> nrg >> needed;
for (int iter = 1; iter <= nrg; iter++) {
fin >> energie[iter] >> cost[iter];
etotal += energie[iter];
}
if (etotal < needed) {
fout << -1;
return 0;
}
for (int iter = 1; iter <= 10001; iter++)
dyn[iter] = IN;
for (int iter = 1; iter <= needed; iter++) {
for (int i = needed; i >= energie[iter]; i--) {
dyn[i] = min(dyn[i - energie[iter]] + cost[iter], dyn[i]);
}
for (int i = energie[iter]; i >= 1; i--) {
dyn[i] = min(dyn[i], cost[iter]);
}
}
fout << dyn[needed];
return 0;
}