Cod sursa(job #438500)

Utilizator vlad30Mateescu Vlad vlad30 Data 10 aprilie 2010 20:28:41
Problema Gutui Scor 0
Compilator c Status done
Runda teme_upb Marime 1.64 kb
#include <stdio.h>
#include <stdlib.h>


void citire(FILE *f,int n,int gutui[100][100]){
	int i,h,g,x=0;
	char linie[100];
	for (i=0;i<n;i++){
		fgets (linie,100,f);
		sscanf (linie,"%d %d",&h,&g);
		gutui[x][0] = h;
		gutui[x][1] = g;
		x++;
	}
	
}

int determinare_max (int gutui[100][100], int n, int max){ //determina cea mai de jos gutuie la care poate ajunge
	int i,poz;
	max = gutui[0][0];
	for (i=1;i<n;i++)
		if (max <= gutui[i][0]){
			max = gutui[i][0];
			poz = i;
		}
return poz;
}

int selecteaza (int gutui[100][100], int n, int h, int rez[100][100]){ //selecteaza gutuile la care mai poate ajunge
	int i,j=0,n1 = 0;
	for (i=0;i<n;i++)
		if (gutui[i][0] <= h && gutui[i][0] > 0){
			rez[j][0] = gutui[i][0];
			rez[j][1] = gutui[i][1];
			j++;
			n1++;
		}
	return n1;
}
		
int main (){

 int i,n1,n,h,u,jos,poz;
 int suma;
 FILE *f,*g;
 char linie[100];
 int gutui[100][100],rez[100][100];
 
 f = fopen ("gutui.txt","r");
 g = fopen ("out.txt","w");
 
 //citire din fisier
 fgets (linie,100,f);
 sscanf (linie, "%d %d %d",&n,&h,&u);
 citire (f,n,gutui);
 for (i=0;i<n;i++)
	printf ("%d %d\n",gutui[i][0],gutui[i][1]);
 poz = determinare_max (gutui,n,jos); 
 
 suma = 0;
 printf ("intru in while\n"); 
 while (h <= jos && h >= 0){
	suma = suma + gutui[poz][1];
	printf ("%d %d %d %d\n",poz,gutui[poz][0],gutui[poz][1],suma);
	gutui[poz][0] = 0;
	h = h - u;
	//printf ("%d\n",h);
	n1 = selecteaza (gutui,n,h,gutui);
	if (n1 == 1){
		suma = suma + rez[0][1];
		break;
	}
	else 
		poz = determinare_max (gutui,n1,jos);
}
printf ("ies din while\n");
fprintf (g,"%d\n",suma);

return 0;
}