Pagini recente » Cod sursa (job #280206) | Cod sursa (job #1735627) | Cod sursa (job #685257) | Cod sursa (job #1941013) | Cod sursa (job #3230129)
#include <fstream>
using namespace std;
ifstream in("energii.in");
ofstream out("energii.out");
int dp[2][20010], i, j, n, w;
pair<int, int> a;
int s;
int main()
{
in >> n >> w;
for (i = 0; i < 20001; i++)
dp[0][i] = dp[1][i] = 10001000;
for (i = 1; i <= n; i++)
{
in >> a.first >> a.second;
if (a.first == 0)
continue;
for (j = 1; j <= w*2; j++)
{
if (dp[i % 2][j] == 10001000)
continue;
if (j >= a.first)
dp[i % 2][j] = min(dp[i % 2][j], dp[(i - 1) % 2][j - a.first] + a.second);
}
dp[i%2][a.first] = min(dp[i%2][a.first], a.second);
dp[(i-1) % 2][a.first] = min(dp[(i-1) % 2][a.first], a.second);
}
i--;
int ans = 10001000;
for (j = w; j <= w * 2; j++)
ans = min(ans, dp[i % 2][j]);
if (ans == 10001000)
out << -1;
else
out << ans;
return 0;
}