Pagini recente » Cod sursa (job #2769380) | Cod sursa (job #3145711) | Cod sursa (job #420999) | Cod sursa (job #3194695) | Cod sursa (job #2970550)
#include <bits/stdc++.h>
using namespace std;
ifstream in ("energii.in");
ofstream out ("energii.out");
int dp[2][10001]; /// dp[n][m] = costul minim ca sa obtinem pentru 1..n costul m
int main()
{
int n;
in >> n;
int W;
in >> W;
for (int i=0; i<2; i++)
for (int j=0; j<10001; j++)
dp[i][j] = 1e9;
dp[0][0] = 0;
for (int i=1; i<=n; i++)
{
int w, c;
in >> w >> c;
bool cur = (i & 1), prv = (cur ^ 1);
for (int i=10000; i>=w; i--)
dp[cur][i] = min(dp[cur][i], dp[prv][i-w] + c);
}
bool cur = (n & 1);
int ans = dp[cur][10000];
for (int i=W; i<10000; i++)
ans = min(ans, dp[cur][i]);
if (ans == 1e9)
ans = -1;
out << ans;
return 0;
}