Cod sursa(job #416683)

Utilizator SadmannCornigeanu Calin Sadmann Data 13 martie 2010 11:18:17
Problema Energii Scor 45
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include<stdio.h>
FILE *in,*out;
typedef struct generator
{
	int prod;
	int cost;
	double raport;
};
generator u[1001];

int quicksort(generator array[1001],int left,int right)
{
	if(left<right)
	{
		int i,j;
		double v;
		generator aux;
		v=array[right].raport;
		i=left-1;
		j=right;
		for(;;)
		{
			while(array[++i].raport>v);
			while(array[--j].raport<v);
			if(i>=j)
				break;
			aux=array[i];
			array[i]=array[j];
			array[j]=aux;
		}
		aux=array[i];
		array[i]=array[right];
		array[right]=aux;
		quicksort(array,left,i-1);
		quicksort(array,i+1,right);
	}
	return 0;
}

int n,i,cnec,ccons;
int main()
{
	in=fopen("energii.in","rt");
	out=fopen("energii.out","wt");
	fscanf(in,"%d",&n);
	fscanf(in,"%d",&cnec);
	for(i=0;i<n;i++)
	{
		fscanf(in,"%d %d",&u[i].prod,&u[i].cost);
		u[i].raport=(double)u[i].prod/u[i].cost;
	}
	quicksort(u,0,n-1);
	i=0;
	while(cnec>0)
	{
		cnec-=u[i].prod;
		ccons+=u[i].cost;
		i++;
		if(i>=n)
			break;
	}
	if(cnec>0)
		fprintf(out,"-1");
	else
		fprintf(out,"%d",ccons);
		
	return 0;
}