Cod sursa(job #262449)

Utilizator cosmin79Carabet Cosmin Andrei cosmin79 Data 19 februarie 2009 12:35:04
Problema Energii Scor 25
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <stdio.h>
#include <stdlib.h>
struct generator
{
	int energie,cost;
};
generator v[1005];
int g,w,economie_distrusa;
void read()
{
	int i;
	scanf("%d%d",&g,&w);
	for (i=1; i<=g; i++)
		scanf("%d%d",&v[i].energie,&v[i].cost);
}
int compare(const void *p,const void *q)
{
	generator x=*(generator*)p,y=*(generator*)q;
	if (x.cost<y.cost)
		return -1;
	if (x.cost>y.cost)
		return 1;
	if (x.energie<y.energie)
		return -1;
	if (x.energie>y.energie)
		return 1;
	return 0;
}
void sort()
{
	qsort(v+1,g,sizeof(v[0]),compare);
}
void verif()
{
	int i,s=0;
	for (i=1; i<=g; i++)
		s+=v[i].energie;
	if (s<w)
	{
		printf("-1");
		economie_distrusa=1;
	}
}
void solve()
{
	int costmin=0,energie=0,r,i;
	for (i=1; i<=g; i++)
		if (energie<w)
		{
			energie+=v[i].energie;
			costmin+=v[i].cost;
		}
	printf("%d",costmin);
}
int main()
{
	freopen("energii.in","r",stdin);
	freopen("energii.out","w",stdout);
	read();
	sort();
	verif();
	//afisare();
	if (economie_distrusa==0)
		solve();
	return 0;
}