Pagini recente » Cod sursa (job #1060109) | Cod sursa (job #2724215) | Cod sursa (job #1414761) | Cod sursa (job #1393086) | Cod sursa (job #675667)
Cod sursa(job #675667)
#include <stdio.h>
#include <stdlib.h>
#define MAXG 1000
typedef struct {
short EG, CG;
} energie;
int cmp(const void *a, const void *b) {
energie x = *(energie *)a, y = *(energie *)b;
return x.CG*y.EG - x.EG*y.CG; // Compar costul unitatii de energie
} // x.CG/x.EG cu costul unitatii y.CG/y.EG
int main() {
FILE *fin = fopen("energii.in", "r"), *fout = fopen("energii.out", "w");
energie g[MAXG];
short G, W, W1, i;
long C1;
fscanf(fin, "%hd%hd", &G, &W);
for (i = 0; i < G; i++) {
fscanf(fin, "%hd%hd", &g[i].EG, &g[i].CG);
}
qsort(g, G, sizeof(energie), cmp); // Sortez crescator dupa pretul unitatii
for (i = W1 = C1 = 0; i < G && W1 < W; i++) {
W1 += g[i].EG;
C1 += g[i].CG;
}
fprintf(fout, "%ld", W1 < W ? -1 : C1);
fclose(fin);
fclose(fout);
return 0;
}