Cod sursa(job #425655)

Utilizator TzutzStefan Tzutz Data 25 martie 2010 22:07:48
Problema Gutui Scor 60
Compilator c Status done
Runda teme_upb Marime 0.78 kb
#include<stdio.h>
#include<stdlib.h>

long N,H,U,lvl,i,*v,*s,sum,j,lvlm;


void put (long a,long b){
	int ok;
	long a1,b1;
	
	if(s[a]==0){
		s[a]=b;
		v[a]=a;
	}
	else 	{
		ok=1;j=a;
		while(ok && j>=0){
			if(s[j]==0){
				s[j]=b;
				v[j]=a;
				ok=0;
			}
			if(s[j]<b) {
				b1=s[j];
				a1=v[j];
				s[j]=b;
				v[j]=a;
				put(a1,b1);
				ok=0;
			}
			j--;
		}
		
		
	}		

}

int main(){
	long a,b;
	FILE *f=fopen("gutui.in","r");
	FILE *g=fopen("gutui.out","w");
	fscanf(f,"%ld %ld %ld",&N,&H,&U);
	lvl=H/U+1;
	s=(long *) malloc (lvl*sizeof(long));
	v=(long *) malloc (lvl*sizeof(long));
	for(i=0;i<lvl;i++)
		s[i]=v[i]=0;
	for(i=0;i<N;i++){
	
		fscanf(f,"%ld %ld",&a,&b);
		lvlm=(H-a)/U;
		put(lvlm,b);
		}
	sum=0;
	for(i=0;i<lvl;i++)
		sum=sum+s[i];
	fprintf(g,"%ld",sum);
	return 0;
}