Cod sursa(job #469675)

Utilizator andunhillMacarescu Sebastian andunhill Data 8 iulie 2010 16:22:37
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<fstream>
#include<bitset>
#include<vector>
using namespace std;
#define nm 5001
ifstream f("energii.in");
ofstream g("energii.out");
bitset<nm+9>v[1005];
vector<long>cmin,e,ct;
int n,ec,min1,gen,energ,i,j;
int main()
{	f>>n>>ec;
	e.resize(n+2,0);
	ct.resize(n+2,0);
	cmin.resize(nm+2,-1);
	for(i=1;i<=n;i++)
		f>>e[i]>>ct[i];
	cmin[0]=0;
	for(i=1;i<=ec;i++)
	{	min1=1000000;
		for(j=1;j<=n;j++)
			if(i>=e[j] && !v[i-e[j]][j])
				if(min1>ct[j]+cmin[i-e[j]])
					min1=ct[j]+cmin[i-e[j]] , cmin[i]=min1 ,gen=j;
		if(i>=e[gen])
			v[i-cmin[gen]][gen]=1;
	}
	min1=1000000;
	for(i=ec;i<nm;i++)
		if(cmin[i]!=-1 && min1>cmin[i])
			min1=cmin[i];
	if(min1==1000000)
		g<<-1;
	else g<<min1;
	f.close();
	g.close();
	return 0;
}