Cod sursa(job #438082)

Utilizator ulitamoscalenco iulia ulita Data 10 aprilie 2010 14:39:34
Problema Gutui Scor 0
Compilator c Status done
Runda teme_upb Marime 1.29 kb
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>

typedef struct gut{
	long int  hl;
	long int g;
	}gutui ;

	 gutui *a; long int n=0;

void sort(){
	long int i,j;
		for(i=0;i<n;i++)
		for(j=n-1;j>i;j--)
			if(a[j].g<a[j-1].g) {
			long int t1,t2;
			t1=a[j].g; a[j].g=a[j-1].g; a[j-1].g=t1;
			t2=a[j].hl; a[j].hl=a[j-1].hl; a[j-1].hl =t2;
				}
			}



int main ()
{
	long int  i,u,h;
	FILE *f1, *f2;

	f1=fopen("gutui.in","r");
	f2=fopen("gutui.out", "w");
	fscanf(f1,"%ld",&n);
	fscanf(f1,"%ld",&h);
	fscanf(f1,"%ld",&u);
	a = ( gutui *)malloc( n* sizeof( gutui));
	
	for(i=0;i<n;i++){
		a[i].hl=(long int)malloc(sizeof(long int));
		a[i].g=(long int)malloc(sizeof (long int));
		fscanf(f1,"%ld",&a[i].hl);
		fscanf(f1,"%ld", &a[i].g);
		
	}
	long int s[n]; 
	
	int k=0;
	long int crt;	
	int gata=1;	
	
	//while(gata>0){
		long int j;
	for(j=0;j<n;j++){
		long int  hh;
		gata=0;
		
		sort();
		crt=0;
		 s[k]=0;
		for(i=0;i<n;i++){
			//printf ("--%ld--", a[i].g);
			  hh=a[i].hl+crt*u;
			
			if (hh<=h) { 
				
				//printf ("--%ld--", a[i].hl);
				s[k]=s[k]+a[i].g;
				if (crt==0){a[i].hl=h+2;a[i].g=0;}
				 gata=1;
				 crt++; 
			}
		
		}
		printf ("|");
		printf ("--%ld--", s[k]);
		k++;
	}
	
	 long int maxs=0;
	 for(i=0;i<k;i++)
		if(s[i]>maxs) maxs=s[i];
	fprintf(f2,"%ld",maxs);
	return 0;
	
}