Pagini recente » Cod sursa (job #3276216) | Cod sursa (job #687377) | Cod sursa (job #156708) | Cod sursa (job #1541979) | Cod sursa (job #425663)
Cod sursa(job #425663)
Utilizator |
Stefan Tzutz |
Data |
25 martie 2010 22:19:16 |
Problema |
Gutui |
Scor |
60 |
Compilator |
c |
Status |
done |
Runda |
teme_upb |
Marime |
0.8 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;
}
else {
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;
}