Cod sursa(job #484047)

Utilizator petroMilut Petronela petro Data 11 septembrie 2010 19:30:27
Problema Energii Scor 45
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 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],aux;
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 sort()
{
	int i,ok;
	
	do
	{
		ok=1;
		for(i=1;i<=n-1;++i)
			if(v[i].c>v[i+1].c) {aux=v[i];
								 v[i]=v[i+1];
								 v[i+1]=aux;
								 ok=0;}
	}
	while(ok==0);
}

void solve()
{
	long s=0,c=0,i=1;
	while(s<W && i<=n)
	{
		s+=v[i].x;
		c+=v[i].y;
		++i;
	}
	if(s<W) g<<"-1\n";
	else g<<c<<"\n";
	
	g.close();
}
		
int main()
{
	cit();
	sort();
	solve();
	return 0;
}