Pagini recente » Cod sursa (job #2330086) | Cod sursa (job #3304508) | Cod sursa (job #3346187) | Cod sursa (job #3349139) | Cod sursa (job #3320900)
#include <bits/stdc++.h>
using namespace std;
ifstream f("energii.in");
ofstream g("energii.out");
const int INF = 1e9;
int main() {
int G, W;
f >> G >> W;
vector<int> a(G + 1), b(G + 1);
for (int i = 1; i <= G; i++)
f >> a[i] >> b[i];
int mx = 0;
for (int i = 1; i <= G; i++) mx += a[i];
mx = min(mx, W + 10000);
vector<int> dp(mx + 1, INF);
dp[0] = 0;
for (int i = 1; i <= G; i++)
for (int w = mx - a[i]; w >= 0; w--)
if (dp[w] != INF)
dp[w + a[i]] = min(dp[w + a[i]], dp[w] + b[i]);
int ans = INF;
for (int w = W; w <= mx; w++)
ans = min(ans, dp[w]);
if (ans == INF) g << -1;
else g << ans;
return 0;
}