Cod sursa(job #585291)

Utilizator bubu94A.Bogdan bubu94 Data 28 aprilie 2011 20:43:29
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <fstream>
using namespace std;

fstream f("energii.in",ios::in),g("energii.out",ios::out);

int gx,w;

struct gen{
	unsigned long eg,cg;
};


gen x[10200];
int m[1000000];

long k=0;

int main()
{
	f>>gx;
	f>>w;
	
	unsigned long  min;
	long s=0;
	for(int i=0;i<gx;i++)
	{
		f>>x[i].eg>>x[i].cg;
		s+=x[i].eg;
		if(m[x[i].eg]> x[i].cg || m[x[i].eg]==0)
			m[x[i].eg]= x[i].cg;
		for(int j=1;j<=w;j++)
		{
			if(m[j] &&  ((m[j+x[i].eg]>m[j]+x[i].cg)|| m[j+x[i].eg]==0) && x[i].eg!=j)
				m[j+x[i].eg]=m[j]+x[i].cg;
		}
		
	}
	if (s<w){
		g<<-1; return 0;
	}
	min=m[s];
	for(int i=w+1;i<=s;i++)
	{
		if (m[i]<min && m[i]!=0)
			min=m[i];
	}
	
	g<<min;
	return 0;
}