Pagini recente » Cod sursa (job #390798) | Cod sursa (job #2117949) | Cod sursa (job #454737) | Cod sursa (job #2838438) | Cod sursa (job #2833461)
#include <fstream>
using namespace std;
ifstream f("energii.in");
ofstream g("energii.out");
#define WMAX 5005
#define INF ((1<<30)-1)
int G, W, dp[WMAX];
void initializare() {
for (int i = 1; i <= W; i++)
dp[i] = INF;
}
void rezolvare() {
int EG, CG;
for (int i = 1; i <= G; i++) {
f >> EG >> CG;
if (EG > W) {
for (int en = 1; en <= W; en++)
dp[en] = min(dp[en], CG);
continue;
}
for (int en = W; en >= EG; en--)
dp[en] = min(dp[en], dp[en - EG] + CG);
for (int en = 1; en < EG; en++)
dp[en] = min(dp[en], CG);
}
}
int main() {
f >> G >> W;
initializare();
rezolvare();
if (dp[W] == INF)
g << -1;
else
g << dp[W];
return 0;
}