Cod sursa(job #425716)

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

long N,H,U,lvl,i,*s,sum,j,lvlm,b11,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]=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){	
				if(s[a1]==0){
					s[a1]=b1;
					//v[a1]=a1;
					ok=0;
				}
				else 	{
					j=a1;
					while(j>=0){
						if(s[j]==0){
							s[j]=b1;
							//v[j]=a1;
							ok=0;
						}
						else {
							if(s[j]<b1) {
								b11=s[j];
								//a11=v[j];
								s[j]=b1;
								b1=b11;
								a1=j;
								//v[j]=a1;
								ok=1;
							}
						}
						j--;
					}
				if(j==-1) ok=0;	
				}	
			}
		}

	sum=0;
	for(i=0;i<lvl;i++)
		sum=sum+s[i];
	fprintf(g,"%ld",sum);
	return 0;
}