Cod sursa(job #481279)

Utilizator dcm9000Dinu Cristian Mircea - UPB dcm9000 Data 31 august 2010 02:21:44
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <iostream>
#include <algorithm>
#include <fstream>
#include <string>

using namespace std;

#define FILE_IN "energii.in"
#define FILE_OUT "energii.out"

int G, W;
int E[1000], C[1000];

int main()
{
	ifstream fisIn(FILE_IN);
    ofstream fisOut(FILE_OUT);

    fisIn >> G >> W;
    for (int i=0; i<G; i++) fisIn >> E[i] >> C[i];

	int best = -1;
    int cost[5000];
    for (int i=0; i<W; i++) cost[i] = -1;
    cost[0] = 0;

    for (int i=0; i<G; i++)
    {
		int Ei = E[i];
		int Ci = C[i];
		
		for (int j=W-1; j>=0; j--)
			if (cost[j] >= 0)
			{
				if (j+Ei < W)
				{
					if ((cost[j+Ei] == -1) || (cost[j]+Ci < cost[j+Ei])) cost[j+Ei] = cost[j]+Ci;
				}
				else
				{
					if ((best == -1) || (cost[j]+Ci < best)) best = cost[j]+Ci;
				}
			}
	}

	fisOut << best;
}