Pagini recente » Cod sursa (job #149024) | Arhiva de probleme | Cod sursa (job #786968) | Cod sursa (job #2757040) | Cod sursa (job #433767)
Cod sursa(job #433767)
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE *fi=fopen("gutui.in","r");
FILE *fo=fopen("gutui.out","w");
typedef struct gutui {
int h,g;
} Gutui;
Gutui *g,aux;
int n,h,u,total=0,i,j,cules;
fscanf(fi,"%d %d %d",&n,&h,&u);
g=(Gutui*)calloc(n,sizeof(Gutui));
for (i=0;i<n;i++) {
fscanf(fi,"%d %d",&g[i].h,&g[i].g);
}
//sortez dupa greutate
//ce e la egalitate, sortez dupa momentul disparitiei
for (i=0;i<n-1;i++)
for (j=i+1;j<n;j++)
if ((h-g[j].h)/u<(h-g[i].h)/u) {
aux=g[i];
g[i]=g[j];
g[j]=aux;
}
else if ((h-g[j].h)/u==(h-g[i].h)/u && g[j].g>g[i].g) {
aux=g[i];
g[i]=g[j];
g[j]=aux;
}
for (i=0;i<n;i++) {
cules=0;
if (g[i].h<=h) {
total+=g[i].g;
cules=1;
}
if (cules)
for (j=i+1;j<n;j++)
g[j].h+=u;
}
fprintf(fo,"%d",total);
fclose(fi);
fclose(fo);
return 0;
}