Pagini recente » Cod sursa (job #2514470) | Cod sursa (job #1887065) | Cod sursa (job #1128695) | Cod sursa (job #319328) | Cod sursa (job #438583)
Cod sursa(job #438583)
#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;
if ( ((gutui*)a)->h == ((gutui*)b)->h) {if ( ((gutui*)a)->m < ((gutui*)b)->m) return 1;}
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,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);
for (i=0;i<n;i++) printf("%i %i\n", vect[i].h,vect[i].m);
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;
}