Pagini recente » Cod sursa (job #1850062) | Cod sursa (job #2961608) | Cod sursa (job #46393) | Cod sursa (job #3236660) | Cod sursa (job #609382)
Cod sursa(job #609382)
#include <fstream.h>
#define min(a, b) ((a) < (b) ? (a) : (b))
#define max(a, b) ((a) > (b) ? (a) : (b))
int main ()
{
long G, W, EG[10010], CG[10010], m[2][5010], Suma = 0, i, j;
ifstream fin ("energii.in");
ofstream fout ("energii.out");
fin >> G >> W;
for (i = 1; i <= G; i++)
{
fin >> EG[i] >> CG[i];
Suma += EG[i];
}
for (j = 0; j <= W; j++)
{
m[0][j] = 20000;
}
fin.close ();
if (Suma < W)
{
fout << "-1";
fout.close ();
return 0;
}
for (i = 1; i <= G; i++)
{
for (j = 1; j <= W; j++)
{
if (EG[i] < j) m[i % 2][j] = min (m[(i - 1) % 2][j], m[(i - 1) % 2][max(j - EG[i], 0)] + CG[i]);
else m[i % 2][j] = min (m[(i - 1) % 2][j], CG[i]);
}
}
fout << m[G % 2][W];
fout.close ();
return 0;
}