Cod sursa(job #436547)
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <stdint.h>
int main() //n nr gutui, h inaltimea maxima, u inaltime ridicare
{ FILE *f, *g;
long int n;
uint32_t h,u;
uint32_t hg[100000] ,wg[100000],v[100000];
long int i;
long int j;
//uint32_t f1,f2;
uint32_t maxh,maxw;
long int contor=0;
uint32_t greutate=0;
f=fopen("gutui.in","r");
g=fopen("gutui.out","w");
fscanf(f,"%ld",&n);
fscanf(f,"%d",&h);
fscanf(f,"%d",&u);
for(i=0;i<n;i++)
{fscanf(f,"%d",&hg[i]);
fscanf(f,"%d",&wg[i]);
v[i]=0;}
maxh=0;
maxw=0;
for(i=0;i<n;i++)
{
//printf("\n");
maxh=0;
maxw=0;
for(j=0;j<n;j++)
{//printf("maxh=%.0f\n",maxh);
if(hg[j]<=h-u*i){
if((floor((h-hg[j])/u)!=floor((h-maxh)/u))&&(hg[j]>maxh)&&(v[j]!=1)) {//printf("maxhh=%.0f",maxh);
maxh=hg[j];
maxw=wg[j];
contor=j;
}
else
if((floor((h-hg[j])/u)==floor((h-maxh)/u))&&(wg[j]>maxw)&&(v[j]!=1)) {maxh=hg[j];
maxw=wg[j];
contor=j;
}
}
}
//if(mem==maxh) break;
v[contor]=1;
greutate=greutate+maxw;
//printf("gre=%.0f\n",greutate);
}
fprintf(g,"%d",greutate);
fclose(f);
fclose(g);
return 0;
}