Cod sursa(job #1064518)

Utilizator dorinmoldovanMoldovan Dorin dorinmoldovan Data 21 decembrie 2013 23:32:08
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.18 kb
#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;
}