Pagini recente » Cod sursa (job #587690) | Cod sursa (job #2755247) | Cod sursa (job #1054033) | Cod sursa (job #1160813) | Cod sursa (job #2722398)
#include <fstream>
#include <climits>
using namespace std;
const int WMAX = 5000;
const int INF = INT_MAX / 2;
int dp[2][1 + WMAX];
int main()
{
ifstream in("energii.in");
ofstream out("energii.out");
int g, w;
in >> g >> w;
int lin = 1;
for(int i = 0; i <= w; i++)
{
dp[1 - lin][i] = INF;
}
for (int i = 1; i <= g; i++, lin = 1 - lin)
{
int energie, pret;
in >> energie >> pret;
for (int j = 0; j <= w; j++)
{
if (j <= energie)
{
dp[lin][j] = min(dp[1 - lin][j], pret);
}
else
{
dp[lin][j] = min(dp[1 - lin][j], dp[1 - lin][j - energie] + pret);
}
}
}
if(dp[1 - lin][w] == INF)
{
out << -1 << '\n';
}
else
{
out << dp[1 - lin][w] << '\n';
}
return 0;
}