Pagini recente » Cod sursa (job #1346936) | Cod sursa (job #1192392) | Cod sursa (job #1953091) | Cod sursa (job #2968755) | Cod sursa (job #1064518)
#include <fstream>
#include <iostream>
using namespace std;
int cost(int size, int w, int* eg, int* cg)
{
if(size == 1)
{
if(w <= 0)
return 0;
if(eg[0] >= w)
return cg[0];
else
return -1;
}
if(size > 1)
{
int sum_1 = cost(size - 1, w - eg[size - 1], eg, cg) + cg[size - 1];
int sum_2 = cost(size - 1, w, eg, cg);
if(sum_1 >= w && sum_2 >= w)
return sum_1 > sum_2 ? sum_2 : sum_1;
else if(sum_1 < w && sum_2 >= w)
return sum_2;
else if(sum_1 >= w && sum_2 < w)
return sum_1;
else if(sum_1 < w && sum_2 < w)
return -1;
}
return 0;
}
int main(void)
{
int G; // number of generators
int W; // quantity of energy necessary to start the central
int EG[1000]; // quantity of energy produced by a generator
int CG[1000]; // necessary cost for the production of energy
int sum; // the final cost
// Read data from the input file
ifstream fin ("energii.in");
fin >> G;
fin >> W;
for(int i = 0; i < G; i++)
{
fin >> EG[i];
fin >> CG[i];
}
fin.close();
sum = cost(G, W, EG, CG);
FILE *fout;
fout = fopen("energii.out", "w");
fprintf(fout, "%d\n", sum);
fclose(fout);
return 0;
}