Cod sursa(job #438501)
#include <stdio.h>
#define max 100000
typedef struct gutui {
int h; // inaltime
int m; // masa
} gutui;
int comp(void* a,void* b)
{ if ( ((gutui*)a)->h < ((gutui*)b)->h) return 1;
else return -1;}
int main() {
FILE* s = fopen("gutui.in","r");
FILE* d = fopen("gutui.out","w");
gutui vect[max];
int n,h,u,i,j,x,masa,maxmasa,crt;
//citesc datele
fscanf(s,"%i",&n);
fscanf(s,"%i",&h);
fscanf(s,"%i",&u);
for (i=0;i<n;i++)
{fscanf(s,"%i",&vect[i].h);
fscanf(s,"%i",&vect[i].m);}
//
qsort(vect,n,sizeof(gutui),comp);
maxmasa=vect[0].m;
for (i=0;i<n-1;i++) {
masa=vect[i].m;
crt=1;
for (j=i+1;j<n;j++)
if (vect[j].h + u * crt <= h ) {masa=masa+vect[j].m;crt++;}
if (masa>maxmasa) maxmasa=masa;
}
fprintf(d,"%i \n", maxmasa);
fclose(s);
fclose(d);
return 0;
}