Pagini recente » Diferente pentru utilizator/shtefana intre reviziile 1 si 3 | Cod sursa (job #62794)
Cod sursa(job #62794)
#include<stdio.h>
int D[100],A[100],k,Mx,n,x,l,i,is;
int max(int x)
{ Mx=0;
if(k>n) return 0;
while(D[k]>x-l&& k<=n) { if(A[k]>Mx) Mx=A[k]; k++;}
return Mx+max(x-l);
}
void swap(int a,int b)
{ int aux;
aux=D[a]; D[a]=D[b]; D[b]=aux;
aux=A[a]; A[a]=A[b]; A[b]=aux;
}
int heapdown(long int p, long int k)
{ if(p>k/2) return 0;
is=2*p;
if(p<k/2) if(D[2*p]>D[2*p+1]) is=2*p+1;
if(D[p]>D[is]){ swap(p,is); heapdown(is,k);}
return 0;
}
int main()
{ FILE *f=fopen("minim.in","r");
FILE *g=fopen("minim.out","w");
fscanf(f,"%d%d%d",&n,&x,&l);
for(i=1;i<=n;i++) fscanf(f,"%d%d",&D[i],&A[i]);
for(i=n/2;i>=1;i--) heapdown(i,n);
for(i=n;i>=1;i--) { swap(1,i);
heapdown(1,i-1);
}
k=1;
while(D[k]>x) k++;
fprintf(g,"%d",max(x));
fcloseall();
return 0;
}