Pagini recente » Cod sursa (job #2368056) | Cod sursa (job #289546) | Cod sursa (job #364591) | Cod sursa (job #1130414) | Cod sursa (job #2361880)
#include <fstream>
#include <iostream>
#include <cstring>
#define Nmax 1003
#define INF 0x3f3f3f3f
using namespace std;
ifstream f("energii.in");
ofstream g("energii.out");
int n, W, x, y, wt;
pair <int, int> v[Nmax]; // energia, costul;
int dp[Nmax][5001]; // costul minim pt a obtine j unit de energie cu i generatoare
int main()
{
f >> n >> W;
for (int i = 1, x, y; i <= n; i++)
{
f >> x >> y;
v[i]={x, y};
wt+=x;
}
if(wt < W)
{
g << "-1";
return 0;
}
memset(dp, INF, sizeof(dp));
dp[0][0]=0;
for (int i = 1; i <= n; i++)
{
for (int j = 0; j <= W; j++)
{
dp[i][j]=dp[i-1][j];
if(j-v[i].first<0) continue;
dp[i][j]=min(dp[i-1][j], dp[i-1][j-v[i].first]+v[i].second);
}
}
/*for (int i = 1; i <= n; i++)
{
for (int j = 0; j <= W; j++)
cout << dp[i][j] << " ";
cout << '\n';
}*/
g << dp[n][W];
return 0;
}