Cod sursa(job #441235)

Utilizator sshdas21Ionut Moise sshdas21 Data 12 aprilie 2010 20:32:10
Problema Gutui Scor 10
Compilator cpp Status done
Runda teme_upb Marime 0.92 kb
#include <stdlib.h>
#include <stdio.h>

#define file_in "gutui.in"
#define file_out "gutui.out"

typedef struct fruit_
{
	int height;
	int weight;
} fruit;

int comp(const void *o1, const void *o2)
{
	fruit *a = (fruit *)o1;
	fruit *b = (fruit *)o2;

	if((*a).height != (*b).height)
		return (*b).height - (*a).height;
	else
		return (*b).weight - (*a).weight;
}

int main()
{
	int i, j, N, H, U, sum;
	
	freopen(file_in, "rt", stdin);
	freopen(file_out, "wt", stdout);

	scanf("%i %i %i", &N, &H, &U);
	fruit *fruits = (fruit *)malloc(N*sizeof(fruit));
	for(i = 0; i < N; i++) 
		scanf("%i %i", &fruits[i].height, &fruits[i].weight);
	
	qsort(fruits, N, sizeof(fruit), comp);

	j = 0;
	sum = 0;
	for(i=0;i<N;i++)
	{
		if(fruits[i].height + (j * U) <= H)
		{
			sum += fruits[i].weight;
			j++;	
		}
	}

	printf("%i", sum);
	free(fruits);
	fclose(stdin);
	fclose(stdout);

	return 0;
}