Pagini recente » Cod sursa (job #418966) | Cod sursa (job #1034776) | Cod sursa (job #1313731) | Cod sursa (job #1523568) | Cod sursa (job #2886976)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("energii.in");
ofstream fout("energii.out");
int n, w, x;
int e[5005],c[5005],cost[10005] = {-1};
int minim = 0;
const int MAX = 999999999;
int main()
{
fin >> n >> w;
for(int i = 1; i <= n; i++)
{
fin >> e[i] >> c[i];
}
for(int i = 1; i <= w; i++)
cost[i] = MAX;
// en[i] -> totalul de energie pt fiecare grupare
// en[i] -> costul minim pentru a ajunge la energie de valoare i
/*
j - i
j -> cantitate de energie
i -> indice pentru generatoare*/
for(int i = 1 ; i <= n; i++)
{
for(int j = w ; j >= 0; j--)
{
/// suntem la generatorul i ce poate produce e[i] energie cu cost c[i]
/// noi avem de produs j energii
if(e[i] >= j)
cost[j] = min(cost[j],c[i]);
else
cost[j] = min(cost[j], cost[j - e[i]] + c[i]);
}
}
if(cost[w] != MAX)
fout << cost[w];
else
fout << -1;
return 0;
}
/*
1 2 3 ................. w
j - e[i] j
e[i]
8 energii -> generator 1 3 energii si generator 4 care produce 5 energii
8 energii -> generator 3 2 energii
*/
// indicii pentru en o sa fie cantitate de energie
// valorile din en o sa fie costuri