Cod sursa(job #531751)

Utilizator micutuzBalog Adrian micutuz Data 10 februarie 2011 11:04:05
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include<iostream>
#include<fstream>
#define MIN(a,b)((a)<(b) ? (a):(b))

using namespace std;
int nrg, w, eg[1001], cg[1001], a[1001][5001], i, j, tot=0;
int main()
{
	ifstream cn("energii.in");
	ofstream co("energii.out");
	

	cn>>nrg;
	cn>>w;
	
	for(i=1;i<=nrg;i++)
		cn>>eg[i]>>cg[i];
	for(i=1;i<=nrg;i++)
		tot+=eg[i];
	if(tot<w)
	{
		co<<"-1";
		return 0;
	}	
	for(i=1;i<=w;i++)
		a[0][i]=1000000;
	
	for(i=1;i<=nrg;i++)
	{
		for(j=1;j<=w;j++)
		{
			if(eg[i]>j)
				a[i][j]=MIN(a[i-1][j], cg[i]);
			else
				a[i][j]=MIN(a[i-1][j],a[i-1][j-eg[i]]+cg[i]);
		}
	}
	co<<a[nrg][w];
	cn.close();
	co.close();
	return 0;
}