Cod sursa(job #463729)

Utilizator simona.poilincaSimona Poilinca simona.poilinca Data 17 iunie 2010 12:39:25
Problema Gutui Scor 10
Compilator c Status done
Runda teme_upb Marime 0.95 kb
#include<stdio.h>
#include<stdlib.h>



int main(){
int n, h, u, *h_gut, *g_gut, i, aux = 0, recolta = 0;
FILE *f;
f = fopen("gutui.in", "r");


//Citire copac
fscanf(f,"%d %d %d", &n, &h, &u);
h_gut = (int*)malloc(n * sizeof(int)); 
g_gut = (int*)malloc(n * sizeof(int));
for (i = 0; i < n ; i++)
	fscanf(f,"%d %d", &h_gut[i], &g_gut[i]);
fclose(f);

//Culesul
while ((h > 0)&&(aux != -1)){
	//Calculam care gutuie trebuie culeasa
	aux = -1;
	for (i = 0; i < n; i++){
		if (h_gut[i] > h)
			g_gut[i] = 0;
		else
			if (g_gut[i] != 0)
				if (aux == -1)
					aux = i;
				else
					if (h_gut[i] / u >= h_gut[aux] / u)
						if (h_gut[i] / u > h_gut[aux] / u)
							aux = i;
						else
							if (g_gut[i] > g_gut[aux])
								aux = i;
		}
	
	//Culegem
	if (aux != -1){
		recolta = recolta + g_gut[aux];
		g_gut[aux] = 0;
		}

	h = h - u;
	}


//Afisare
f = fopen("gutui.out", "w");
fprintf(f,"%d", recolta);
fclose(f);
free(h_gut);
free(g_gut);
return 0;
}