Pagini recente » Cod sursa (job #340370) | Cod sursa (job #1048026) | Cod sursa (job #1695695) | Cod sursa (job #1025817) | Cod sursa (job #1759004)
#include <stdio.h>
using namespace std;
const int G = 1001, W = 5001, INF = 1005 * 10000;
int energie[G], cost[G], sume[W+G*10];
int main()
{
FILE *in, *out;
in = fopen ("energii.in", "r");
out = fopen ("energii.out", "w");
int g, w,i;
fscanf(in , "%d %d", &g, &w);
for(i = 1; i <= g; i++)
fscanf(in, "%d %d", &energie[i],&cost[i]);
for(i = 1; i <= w + G * 10; i++)
sume[i] = INF;
for(i = 1; i <= g; i++)
for(int j = w + G * 10; j >= 0; j--)
{
if(j > w)
{
if(j - energie[i] >= 0 && sume[j - energie[i]] + cost[i] < sume[w])
sume[w] = sume[j - energie[i]] + cost[i];
}
else
if(j - energie[i] >= 0 && sume[j - energie[i]] + cost[i] < sume[j])
sume[j] = sume[j - energie[i]] + cost[i];
}
if(sume[w] == INF)
fprintf(out, "-1");
else
fprintf(out, "%d", sume[w]);
return 0;
}