Pagini recente » Cod sursa (job #2461239) | Cod sursa (job #860850) | Cod sursa (job #2157410) | Cod sursa (job #1413492) | Cod sursa (job #3284698)
#include <iostream>
#include <fstream>
#include <vector>
#include <limits.h>
using namespace std;
int main()
{
ifstream fin("energii.in");
ofstream fout("energii.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;
}