Cod sursa(job #1017803)

Utilizator vladrochianVlad Rochian vladrochian Data 28 octombrie 2013 15:10:44
Problema Energii Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <fstream>
#define Max(a,b) (a)>(b)?(a):(b)
using namespace std;
int ng,gp[1001],gc[1001],en,et,ems,ct,cs,i,j,pd[1001][5002];
ifstream fin("energii.in");
ofstream fout("energii.out");
int main()
{
	fin>>ng>>en;
	for(i=0;i<ng;i++)
	{
		fin>>gp[i]>>gc[i];
		et+=gp[i];
		ct+=gc[i];
	}
	ems=et-en;
	if(!ems)
	{
		fout<<ct<<"\n";
		return 0;
	}
	if(ems<0)
	{
		fout<<"-1\n";
		return 0;
	}
	for(i=gp[0];i<=ems;i++)
		pd[0][i]=gc[0];
	for(i=1;i<ng;i++)
	{
		for (j=1;j<gp[i];j++)
			pd[i][j]=pd[i-1][j];
		for (;j<=ems;j++)
			pd[i][j]=Max(pd[i-1][j],gc[i]+pd[i-1][j-gp[i]]);
	}
	cs=ct-pd[ng-1][ems];
	fout<<cs<<"\n";
	return 0;
}