Cod sursa(job #484067)

Utilizator petroMilut Petronela petro Data 11 septembrie 2010 21:13:14
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include<fstream>
#define M 1005
using namespace std;

ifstream f("energii.in");
ofstream g("energii.out");

typedef struct
{
	int x,y;
	float c;
}Energii;
Energii v[M];
int n,W;

void cit()
{
	int i;
	f>>n>>W;
	for(i=1;i<=n;++i)
	{
		f>>v[i].x>>v[i].y;
		v[i].c=v[i].y/(float)v[i].x;
	}
	f.close();
}

void solve()
{
	int s=-1,j,i,c[M*5],E,C;
	
	for(i=0;i<=W;++i)
		c[i]=-1;
	c[0]=0;
	
	for(i=1;i<=n;++i)
	{
		E=v[i].x;
		C=v[i].y;
		
		for(j=W-1;j>=0;--j)
			if(c[j]>=0) if(j+E<W) {if((c[j+E]==-1) || (c[j]+C<c[j+E])) c[j+E]=c[j]+C;}
						else if((s==-1) || (c[j]+C<s)) s=c[j]+C;
	}
	g<<s<<"\n";		
	g.close();
}
		
int main()
{
	cit();
	solve();
	return 0;
}