Pagini recente » Cod sursa (job #2418973) | Cod sursa (job #3277570) | Cod sursa (job #2719458) | Cod sursa (job #421688) | Cod sursa (job #22361)
Cod sursa(job #22361)
#include <fstream>
#include <cstring>
using namespace std;
#define MAXG 1001
#define MAXW 5001
#define MAXE 13001
#define INF 10000000
int G, W, eg[MAXG], cg[MAXG], cost1[MAXE], cost2[MAXE];
int main()
{
ifstream fin("energii.in");
ofstream fout("energii.out");
int i, j, cmin;
fin >> G >> W;
for (i = 1; i <= G; i++)
fin >> eg[i] >> cg[i];
cost1[0] = cost2[0] = 0;
for (i = 1; i <= MAXE; i++)
cost1[i] = cost2[i] = INF;
for (i = 1; i <= G; i++)
{
for (j = 0; j <= MAXE - eg[i]; j++)
if ( (cost1[j] != INF) && (cost1[j] + cg[i] < cost2[j+eg[i]]) )
cost2[j+eg[i]] = cost1[j] + cg[i];
memcpy(cost1, cost2, sizeof(cost1));
}
cmin = INF;
for (i = W; i <= MAXE; i++)
if (cost1[i] < cmin) cmin = cost1[i];
if (cmin != INF) fout << cmin << "\n";
else fout << "-1" << "\n";
fin.close();
fout.close();
return 0;
}