Pagini recente » Cod sursa (job #645439) | Cod sursa (job #1999526) | Cod sursa (job #2285702) | Cod sursa (job #1030210) | Cod sursa (job #2892731)
#include <bits/stdc++.h>
#define INF ((int)1e9)
using namespace std;
ifstream fin("energii.in");
ofstream fout("energii.out");
struct obj_info {
int energy;
int cost;
};
int n, w;
vector<obj_info> v;
int main(void) {
fin >> n >> w;
v.push_back({0, 0});
for (int i = 1; i <= n; ++i) {
int e, c;
fin >> e >> c;
v.push_back({e, c});
}
vector<vector<int>> dp(n + 1, vector<int>(w + 1, INF));
for (int i = 0; i <= n; ++i) {
dp[i][0] = 0;
}
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= w; ++j) {
int prev_cost;
if (j - v[i].energy < 0) {
prev_cost = v[i].cost;
} else {
prev_cost = dp[i - 1][j - v[i].energy] + v[i].cost;
}
dp[i][j] = min(dp[i - 1][j], prev_cost);
if (dp[i][j] == INF) {
break;
}
}
}
fout << (dp[n][w] == INF ? -1 : dp[n][w]) << "\n";
return 0;
}