Cod sursa(job #770321)

Utilizator NicuCJNicu B. NicuCJ Data 22 iulie 2012 18:00:07
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <fstream>
#define INF 19999999
using namespace std;
int n, energiemin, D[1001][5001], i, j, en[1001], cost[1001];
int main()
{
	ifstream f("energii.in");
	ofstream g("energii.out");
	f>>n>>energiemin;
	for(i=1; i<=n; i++)
	{
		f>>en[i]>>cost[i];
	}
	for(i=1; i<=n; i++)
	{
		D[i][0]=INF;
	}
	for(j=1; j<=energiemin; j++)
	{
		D[0][j]=INF;
	}
	int l=0;
	for(i=1; i<=n;l=1-l, i++)
	{
		for(j=1; j<=energiemin; j++)
		{
			D[i][j]=D[i-1][j];
			if(en[i]>=j && cost[i]<D[i][j])
				D[i][j] = cost[i];
			else
				if(en[i]<j && D[i-1][j-en[i]]+cost[i] < D[i][j])
					D[i][j] = D[i-1][j-en[i]]+cost[i];
		}
	}
	if(D[n][energiemin]!=INF)
		g<<D[n][energiemin];
	else
		g<<-1;
}