Cod sursa(job #716053)

Utilizator ms-ninjacristescu liviu ms-ninja Data 18 martie 2012 10:33:26
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <fstream>
using namespace std;
#define dim 1010
#define inf 0x3f3f3f3f
struct energie
{
	int x, y;
}v[dim];
int sol[dim*10];


int main()
{
	ifstream fin("energii.in");
	ofstream fout("energii.out");
	int g, w, n,i;
	float a, b;
	fin>>g >>w;
	n=g;
	for( ; g;--g)
		fin>>v[g].x >>v[g].y;
	
	for(i=1;i<=dim*10;++i)
		sol[i]=inf;
	
	int maxim=0;
	for(i=1;i<=n;++i)
	{
		for(int j=maxim;j>=0;--j)
			if(sol[j]!=inf)
				if(j+v[i].x<=dim*10)
					sol[j+v[i].x]=min(sol[j+v[i].x],v[i].y+sol[j]);
		maxim=maxim+v[i].x;
		maxim=min(maxim,dim*10-1);
	}		
				
	int raspuns=inf;
	for(i=w;i<=dim*10;++i)
		if(sol[i]!=inf)
			raspuns=min(raspuns,sol[i]);
	
		if(raspuns==inf)
			fout<<"-1";
		else
			fout<<raspuns;
	
		return 0;
}