Pagini recente » Cod sursa (job #1672728) | Cod sursa (job #1982792) | Cod sursa (job #732598) | Cod sursa (job #1821834) | Cod sursa (job #2242984)
#include <iostream>
#include <fstream>
#include <climits>
using namespace std;
ifstream in("energii.in");
ofstream out("energii.out");
const int NMAX = 10005;
int dp[NMAX], e[NMAX], c[NMAX];
int main() {
int g, w;
in >> g >> w;
for(int i = 1; i <= g; i ++)
in >> e[i] >> c[i];
for(int i = 1; i <= w; i ++)
dp[i] = INT_MAX;
dp[0] = 0;
int sol = INT_MAX;
for(int i = 1; i <= g; i ++)
for(int j = w; j >= 0; j --) {
if(dp[j] != INT_MAX) {
if(e[i] + j >= w)
sol = min(sol, dp[j] + c[i]);
if(e[i] + j <= w)
dp[j + e[i]] = min(dp[j + e[i]], dp[j] + c[i]);
}
}
if(sol == INT_MAX)
sol = -1;
out << sol;
return 0;
}