Pagini recente » Cod sursa (job #1031472) | Cod sursa (job #454427) | Cod sursa (job #1059252) | Cod sursa (job #2275240) | Cod sursa (job #711165)
Cod sursa(job #711165)
#include<stdio.h>
#include<stdlib.h>
struct gutuie
{
int inaltime;
int greutate;
};
gutuie G[100000];
int cules[100000];
int compare (const void *a,const void *b)
{
return (*(int *)b- *(int *)a);
}
int main()
{
FILE *f=fopen("gutui.in","rt");
FILE *a=fopen("gutui.out","wt");
int N,H,U,i,ult_completat=-1,suma=0;
fscanf(f,"%i%i%i",&N,&H,&U);
for(i=0;i<N;i++)
fscanf(f,"%i%i",&G[i].inaltime,&G[i].greutate);
qsort(G,N,sizeof(gutuie),compare); //ordonam structura descrescator dupa inaltime;
for(i=0;i<N;++i)
if(ult_completat!=-1 && G[i].greutate > cules[ult_completat] && G[i].inaltime<=H+U && G[i].inaltime>H)
cules[ult_completat]=G[i].greutate;
else if(G[i].inaltime<=H)
{
cules[++ult_completat]=G[i].greutate;
H-=U;
}
for(i=0;i<=ult_completat;i++)
suma+=cules[i];
fprintf(a,"%i",suma);
return 0;
}