Cod sursa(job #485906)

Utilizator g3ppyStoian Vlad g3ppy Data 19 septembrie 2010 20:55:00
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <fstream>
using namespace std;
int main()
{
	ifstream fin("energii.in");
    ofstream fout("energii.out");
	
	int G, W;
	int best = -1;
    int cost[5000];
	
    fin >> G >> W;
	cost[0] = 0;
    for (int i = 1; i < W; i++) cost[i] = -1;

    for (int i=0; i<G; i++)
    {
		int E, C;
		fin >> E >> C;
		
		for (int j = W-1; j >= 0; j--)
			if (cost[j] >= 0)
			{
				if (j + E < W)
				{
					if ((cost[j+E] == -1) || (cost[j] + C < cost[j+E] )) cost[j + E] = cost[j] + C;
				}
				else
				{
					if ((best == -1) || (cost[j] + C < best)) best = cost[j]+C;
				}
			}
	}
	fout << best;
	
	fin.close();
	fout.close();	
	return 0;
}