Pagini recente » Cod sursa (job #2532880) | Cod sursa (job #1326593) | Cod sursa (job #1352123) | Cod sursa (job #1147476) | Cod sursa (job #1351038)
#include <fstream>
using namespace std;
ifstream in("energii.in");
ofstream out("energii.out");
int n, w;
const int N=1002, W=5002;
int energie[N], cost[N];
void citire() {
in >> n >> w;
int i;
for (i=1; i<=n; i++)
in >> energie[i] >> cost[i];
}
int costMinim[N][W];
void initializare() {
int i, j;
for (i=0; i<=n; i++)
for (j=1; j<=w; j++)
costMinim[i][j] = 999999999;
}
void dinamica() {
int i,e;
for (i=1; i<=n; i++)
for (e=1; e<=w; e++) {
costMinim[i][e] = costMinim[i-1][e];
if (e-energie[i] >= 0)
if (costMinim[i][e-energie[i]] + cost[i] < costMinim[i][e])
costMinim[i][e] = costMinim[i][e-energie[i]] + cost[i];
}
}
void afisare() {
if (costMinim[n][w] == 999999999)
out <<"-1";
else
out << costMinim[n][w];
}
int main()
{
citire();
initializare();
dinamica();
afisare();
return 0;
}