Pagini recente » Cod sursa (job #2800382) | Cod sursa (job #794359) | Cod sursa (job #1376580) | Cod sursa (job #1944735) | Cod sursa (job #438451)
Cod sursa(job #438451)
#include <stdio.h>
#include <stdlib.h>
int *in, *gr;
int compare (const void * a, const void * b)
{
return - ( *(int*)a - *(int*)b );
//return -( (*(gutui*)a).greutate - (*(gutui*)b).greutate );
}
void sort(int n){
int i,j,aux;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if (in[i]>in[j]){
aux=in[i];
in[i]=in[j];
in[j]=aux;
aux=gr[i];
gr[i]=gr[j];
gr[j]=aux;
}
}
int rem( int n,int h){
int i,j;
i=0;
while(i<n){
if (in[i]>h) {
for(j=i;j<n-1;j++){
in[j]=in[j+1];
gr[j]=gr[j+1];
}
n--;
}
else i++;
}
return n;
}
int maxim(int n,int h, int u){
int i,max;
max=0;
i=0;
while(i<n)
if (in[i]>h-u){
if(max<gr[i]) max=gr[i];
else i++;
}
else i++;
return max;
}
int main(){
int i,n,h,u,s;
//int j;
FILE *f=fopen("gutui.in","r");
FILE *g=fopen("gutui.out","w");
fscanf(f,"%d%d%d",&n,&h,&u);
in=(int*)malloc(n*sizeof(int));
gr=(int*)malloc(n*sizeof(int));
for(i=0;i<n;i++)
fscanf(f,"%d%d",&in[i],&gr[i]);
sort(n);
s=0;
i=0;
while(n!=0){
if(n==rem(n,h)){
// printf("%d ",maxim(n,h,u));
s=s+maxim(n,h,u);
h=h-u;
// printf("i=%d h=%d s=%d\n",i,h,s);
i++;
}
else {n=rem(n,h);
i=0;
}
}
fprintf(g,"%d",s);
fclose(f);
fclose(g);
getchar();
return 0;
}