Pagini recente » Cod sursa (job #2850023) | Cod sursa (job #2777031) | Cod sursa (job #88729) | Borderou de evaluare (job #313612) | Cod sursa (job #439423)
Cod sursa(job #439423)
#include <stdio.h>
#include <stdlib.h>
typedef struct{
long int h,g;
}gutuie;
//functie care compara doua gutui dupa inaltime
int compara_gutuie(const void *a, const void *b)
{
gutuie * g1 = (gutuie*) a;
gutuie * g2 = (gutuie*) b;
if (g1->h > g2->h) return -1;
if (g1->h < g2->h) return 1;
if (g1->g > g2->g) return -1;
if (g1->g < g2->g) return 1;
return 0;
//return (bb->g - aa->g);
}
int main(){
long int N, H, U;
int max=0;
//N=nr de gutui din copac; H=inaltimea la care poate ajunge;
int i,j;
FILE* f=fopen("gutui.in","r");
FILE* p=fopen("gutui.out","w");
fscanf(f,"%ld %ld %ld",&N,&H,&U);
gutuie* x;
x=(gutuie*)malloc(N*sizeof(gutuie));
for(i=0;i<N;i++){
fscanf(f,"%ld %ld",&x[i].h,&x[i].g);}
qsort(x,N,sizeof(gutuie),compara_gutuie); //sortez vectorul de gutui descrescator dupa inaltime
/*for(i=0;i<N;i++){
printf("%d %d",x[i].h,x[i].g);
printf("\n");
}*/
for(i=0;i<N;i++){
if(x[i].h<=H){
max+=x[i].g;
x[i+1].h+=U;}
else i++;}
fprintf(p,"%d",max);
fclose(f);
fclose(p);
//getchar();
return 0;
}