Cod sursa(job #425619)

Utilizator TzutzStefan Tzutz Data 25 martie 2010 21:47:33
Problema Gutui Scor 10
Compilator c Status done
Runda teme_upb Marime 0.82 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 tmp,a1,b1;
	
	if(s[a]==0){
		s[a]=b;
		v[j]=a;
	}
	else 	{
		ok=1;j=a;tmp=-1;
		while(ok && j>=0){
			if(s[j]==0){
				s[j]=b;
				v[j]=a;
				ok=0;
			}
			else	{ 
				if(s[j]<b && (tmp==-1 || s[tmp]>s[j])) 
					tmp=j;
			}
			j--;
		}
		if(ok && tmp!=-1){
			b1=s[tmp];
			a1=v[tmp];			
			s[tmp]=b;
			v[tmp]=a;
			put(a1,b1);
		}
		
	}		

}

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;
	s=(long *) malloc (lvl*sizeof(long));
	v=(long *) malloc (lvl*sizeof(long));
	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;
}