Cod sursa(job #433202)

Utilizator DetudaArthur Koestler Detuda Data 3 aprilie 2010 14:31:41
Problema Gutui Scor 0
Compilator c Status done
Runda teme_upb Marime 1.4 kb
#include <stdio.h>
#include <string.h>

void swap (long a, long b)
{
	long aux;
	aux=a;
	a=b;
	b=aux;
}


int main()
{
	// nr gutui, inaltimea maxima, inaltarea, rezultatul final
	long n, hi, u, smax=0;
	// inantimea fiecarei gutui si greutatea
	long h[100001], w[100001], i, j, aux, max, imax;
	long hmin, nrs, k, s[100001], cules[100001], hmax;
	FILE *f=fopen("gutui1.in", "r");
	FILE *g=fopen("gutui.out", "w");
	fscanf(f, "%ld %ld %ld", &n, &hi, &u);

	for(i=0; i<n; i++)
	fscanf(f, "%ld %ld", &h[i], &w[i]);
/*	for(i=0; i<n; i++)
	printf("fructul %ld are inaltimea %ld si greutatea %ld\n", i, h[i], w[i]);
*/
	//sortam descrescator fructele, in functie de inaltime
	//trebuie inlocuit cu quicksort, de exemplu
	for(i=0; i<n-1; i++)
	for(j=i+1; j<n; j++)
	if(h[i]<h[j])
	{
	//swap(h[i], h[j]);
	//swap(w[i], w[j]);
	aux=h[i];
	h[i]=h[j];
	h[j]=aux;
	aux=w[i];
	w[i]=w[j];
	w[j]=aux;
	}
	printf("Dupa quicksort: \n");
	for(i=0; i<n; i++)
	printf("fructul %ld are inaltimea %ld si greutatea %ld\n", i, h[i], w[i]);
	
	hmax=h[0];
	printf("hmax este: %ld\n", hmax);
//pana aici sigur e bine
	
	i=0;
	imax=i;
	max=w[i];
	while(i<n &&h[i]+u>=hi)
	{
		imax=(w[i]>max)?i:imax;
		max=w[imax];
		i++;
	}
	if(i==n)
	{
		smax+=max;
		w[imax]=-1;
		for(j=0; j<n; j++)
		{
		h[j]+=u;
		if(h[j]>u)
		w[j]=-1;
		}
	}
	else
	while(i<n && h[i]+2*u>=hi)
	{
		
		

	


	


	fprintf(g, "%ld", smax);
	
	fclose(f);
	fclose(g);
	return 0;
}