Cod sursa(job #295762)

Utilizator drag0s93Mandu Dragos drag0s93 Data 3 aprilie 2009 17:39:02
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include<stdio.h>
#include<stdlib.h>

#define IN "energii.in","r",stdin
#define OUT "energii.out","w",stdout

struct pct{
	int energie,cost;
	double ef;
};

int G,W,costuri;
pct v[1005];
void solve()
{
	for(int i=1;i<=G && W>0;++i)
	{
		while(W>0)
		{
			W-=v[i].energie;
			costuri+=v[i].cost;
		}
	}
	printf("%d\n",costuri);
}
int cmp(const void *q,const void *p)
{
	pct x=*(pct*)q,y=*(pct*)p;
	if(x.ef<y.ef)	return -1;
	else if(x.ef>y.ef)	return 1;
	return 0;
}
int main()
{
	freopen(IN);
	freopen(OUT);
	scanf("%d%d",&G,&W);
	for(int i=1;i<=G;++i)
	{
		scanf("%d%d",&v[i].energie,&v[i].cost);
		v[i].ef=(double)v[i].cost/v[i].energie;
	}
	qsort(v+1,G,sizeof(v[0]),cmp);
	solve();
	return 0;
}