Pagini recente » Cod sursa (job #292375) | Cod sursa (job #1727065) | Cod sursa (job #2979706) | Cod sursa (job #1896342) | Cod sursa (job #3268733)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("energii.in");
ofstream g("energii.out");
struct generator
{
int cost, energie;
}v[1005];
const int MAX = 10005, oo = 1e9;
int n, E, dp[15010], EMAX, mn=oo, ok = 1;
int main()
{
f >> n >> EMAX;
for (int i = 1; i<=n; ++i)
f >> v[i].energie >> v[i].cost;
dp[v[1].energie] = v[1].cost;
E = v[1].energie;
for (int i = 1; i <= EMAX + MAX; ++i)
dp[i] = oo;
for (int i = 2; i<=n; ++i)
{
for (int j = E; j>0; --j)
if (dp[j] != oo)
if (v[i].energie + j <= EMAX + MAX && dp[v[i].energie + j] > dp[j] + v[i].cost)
{
dp[v[i].energie + j] = dp[j] + v[i].cost;
E = max(E, v[i].energie + j);
}
if (v[i].cost < dp[v[i].energie])
dp[v[i].energie] = v[i].cost;
E = max(E, v[i].energie);
}
for (int i = EMAX; i <= EMAX + MAX; ++i)
if (dp[i] < mn)
{
mn = dp[i];
ok = 0;
}
if (ok == 1)
g << -1;
else
g << mn;
return 0;
}