Cod sursa(job #425704)

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

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


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

}

int main(){
	long a,b;
	int ok;
	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;
		a1=lvlm;
		b1=b;
		ok=1;		
		while(ok){
			ok=put(a1,b1);
			}
		}
	sum=0;
	for(i=0;i<lvl;i++)
		sum=sum+s[i];
	fprintf(g,"%ld",sum);
	return 0;
}