Pagini recente » Cod sursa (job #1616337) | Cod sursa (job #1505242) | Cod sursa (job #1747609) | Cod sursa (job #1746438) | Cod sursa (job #2515461)
#include <fstream>
using namespace std;
ifstream fin("energii.in");
ofstream fout("energii.out");
const int nu = 1<<30;
int cmin[1001][5001]; //cmin[i][j] = costul minim pentru a obtine j watti cu <=i generatoare
int main()
{
int n, i, j, E, e[1001], c[1001], se, icmin;
c[0] = nu;
icmin = 0;
se = 0;
fin >> n >> E;
for (i = 1; i<=n; i++)
{
fin >> e[i] >> c[i];
se = se + e[i];
if (c[i] < c[icmin])
icmin = i;
}
if (se < E)
{
fout << -1;
return 0;
}
for (i = 0; i<=E; i++)
cmin[0][i] = nu;
for (i = 1; i<=e[1]; i++)
cmin[1][i] = c[1];
for (i = icmin; i<=n; i++)
for (j = 1; j<=e[icmin]; j++)
cmin[i][j] = c[icmin];
for (i = 1; i<=n; i++)
{
j = 1;
while (cmin[i][j] != 0)
j++;
for (;j<=E; j++)
{
cmin[i][j] = cmin[i-1][j];
if (j>=e[i])
cmin[i][j] = min(cmin[i-1][j], cmin[i-1][j-e[i]]+c[i]);
}
}
fout << cmin[n][E];
return 0;
}