Pagini recente » Cod sursa (job #1915563) | Cod sursa (job #148530) | Cod sursa (job #1127643) | Cod sursa (job #2184631) | Cod sursa (job #827018)
Cod sursa(job #827018)
#include <fstream>
#include <string.h>
#define MAX_N ((const unsigned int)1001)
#define MAX_G ((const unsigned int)5001)
#define MAX_E ((const unsigned int)10001)
#define INFINITE ((const unsigned int)-1)
int N, W;
unsigned int sol = INFINITE;
class Generator
{
public:
int energie;
int cost;
}generator[MAX_N];
unsigned int cost[MAX_E];
bool used[MAX_N];
int main()
{
std::ifstream fin("energii.in");
std::ofstream fout("energii.out");
fin>>N>>W;
for (int i = 0; i < N; ++ i)
fin>>generator[i].energie>>generator[i].cost;
memset(cost, INFINITE, MAX_E * sizeof(int));
cost[0] = 0;
used[0] = true;
for (int i = 0; i < N; ++ i)
{
for (int j = W; j >= 0; j --)
{
if (used[j])
{
used[j + generator[i].energie] = true;
if (cost[j + generator[i].energie] > cost[j] + generator[i].cost)
{
cost[j + generator[i].energie] = cost[j] + generator[i].cost;
if (j + generator[i].energie >= W
&& sol > cost[j + generator[i].energie])
sol = cost[j + generator[i].energie];
}
}
}
}
if (sol == INFINITE)
fout<<-1;
else
fout<<sol;
fin.close();
fout.close();
return 0;
}