Pagini recente » Cod sursa (job #517686) | Cod sursa (job #2723576) | Cod sursa (job #2131559) | Cod sursa (job #779369) | Cod sursa (job #3284697)
#include <iostream>
#include <fstream>
#include <vector>
#include <limits.h>
using namespace std;
int main()
{
ifstream fin("energie.in");
ofstream fout("energie.out");
int n, w, total = 0;
fin >> n >> w;
vector<pair<int, int>> objects(n);
vector<vector<int>> dp(n+1, vector<int>(w + 1, 50000000));
for (int i = 0; i < n; ++i) {
// first = energia, second = costul
fin >> objects[i].first >> objects[i].second;
total += objects[i].first;
}
dp[0][0] = 0;
for (int i = 1; i <= n; ++i) {
for (int j = 0; j <= w; ++j) {
if (j - objects[i-1].first >= 0)
dp[i][j] = min(dp[i-1][j], dp[i-1][j - objects[i-1].first] + objects[i-1].second);
else
dp[i][j] = dp[i-1][j];
}
}
fout << dp[n][w];
return 0;
}