Pagini recente » Cod sursa (job #415705) | Cod sursa (job #2002862) | Cod sursa (job #2246764) | Cod sursa (job #1752124) | Cod sursa (job #2121664)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("energii.in");
ofstream fout ("energii.out");
#define lim 1010
int n, gmin, s;
int en[lim], c[lim];
int dp[lim][5*lim]; /// dp[i][j] cost minim pt exact j unitati de en. produsa din primele i generatoare
int main()
{
fin>>n>>gmin;
for (int i=1; i<=n; i++)
fin>>en[i]>>c[i], s+=en[i];
if (s<gmin)
{
fout<<-1;
return 0;
}
for (int i=0; i<=gmin; i++)
dp[0][i]=2e9;
for (int i=1; i<=n; i++)
for (int j=1; j<=gmin; j++)
if (j < en[i]) dp[i][j] = min (dp[i-1][j], c[i]);
else dp[i][j] = min (dp[i-1][j], dp[i-1][j-en[i]]+c[i]);
fout<<dp[n][gmin];
fout.close();
return 0;
}