Pagini recente » Cod sursa (job #1415194) | Borderou de evaluare (job #2348696) | Cod sursa (job #2504228) | Cod sursa (job #1205270) | Cod sursa (job #2905125)
#include <iostream>
#include <fstream>
using namespace std;
#define N1 1010
#define N2 5010
#define INF 1 << 30
ifstream f1("energii.in");
ofstream f2("energii.out");
int d[N1][N2];
int cost[N1];
int energie[N1];
int G, W;
int main()
{
f1 >> G >> W;
for (int i = 1; i <= G; i++)
{
f1 >> energie[i] >> cost[i];
}
for (int i = 0; i <= G; i++)
{
for (int j = 0; j <= W; j++)
{
if (j == 0)
d[i][j] = 0;
else
d[i][j] = INF;
}
}
// luam in considerare gen curent sau nu il luam si le folosim pe cele de pana acum
//
for (int i = 1; i <= G; i++)
{
for (int j = 1; j <= W; j++)
{
d[i][j] = d[i-1][j]; // nu folosim generatorul curent
if(energie[i] >= j){
d[i][j] = min(d[i][j], cost[i]);
}
else{
d[i][j] = min(d[i][j], cost[i] + d[i-1][j - energie[i]]);
}
}
}
if(d[G][W] == INF){
f2 << -1;
}
else
f2 << d[G][W];
return 0;
}