Pagini recente » Cod sursa (job #1762547) | Cod sursa (job #436359) | Cod sursa (job #1008336) | Cod sursa (job #1049613) | Cod sursa (job #436211)
Cod sursa(job #436211)
#include <stdio.h>
#include <stdlib.h>
typedef struct
{
long g;
long h;
long nr;
}nivel;
int cmp(const void* a, const void* b)
{
static int rez;
rez=((nivel*)b)->g-((nivel*)a)->g;
if(rez==0) rez=((nivel*)b)->h-((nivel*)a)->h;
return rez;
}
nivel v[10];
long rez[10];
int main()
{
FILE *fin=fopen("gutui.in", "r");
FILE *fout=fopen("gutui.out", "w");
int n, i;
long h, u, nivmax, nniv=0, max=0, j;
//nivel *v;
//long *rez;
fscanf(fin, "%d", &n);
fscanf(fin, "%ld", &h);
fscanf(fin, "%ld", &u);
nivmax=h/u;
//v=(nivel*)calloc(n, sizeof(nivel));
//rez=(long*)calloc(nivmax, sizeof(long));
for(i=0;i<n;++i)
{
fscanf(fin, "%ld%ld", &v[i].h, &v[i].g);
v[i].nr=(h-v[i].h)/u;
if(v[i].h>h) {--i; --n;}
}
qsort(v,n,sizeof(nivel),cmp);
i=0;
while(nniv<nivmax && i<n)
{
j=v[i].nr;
while(j>-1)
{
if(rez[j]==0) { max+=rez[j]=v[i].g; ++nniv; break; }
j--;
}
++i;
};
fprintf(fout, "%ld", max);
//free(v);
//free(rez);
fclose(fin);
fclose(fout);
return 0;
}