Pagini recente » Cod sursa (job #1899012) | Cod sursa (job #862991) | Cod sursa (job #1961561) | Cod sursa (job #396847) | Cod sursa (job #3133967)
#include "allhead.h"
FILE *fin = NULL;
FILE *fout = NULL;
typedef struct
{
int g;
int p;
float pg;
} rucsac;
FILE *openfile(char *filename, char *type)
{
FILE *fin = NULL;
if ((fin = fopen(filename, type)) == NULL)
{
printf("fisierul nu a putut sa fie deschis");
exit(EXIT_FAILURE);
}
return fin;
}
void BubbleSort(rucsac *v, int n)
{
int s, i;
rucsac aux;
do
{
s = 0;
for (i = 1; i < n; i++)
{
if (v[i - 1].pg < v[i].pg)
{
aux = v[i - 1];
v[i - 1] = v[i];
v[i] = aux;
s = 1;
}
}
} while (s);
}
void citire(rucsac *v, int N)
{
for (int i = 0; i < N; i++)
{
fscanf(fin, "%d %d", &v[i].g, &v[i].p);
v[i].pg = (float)v[i].p / v[i].g;
}
}
void afisare(rucsac *v, int N)
{
fprintf(fout, "\n");
for (int i = 0; i < N; i++)
{
fprintf(fout, "%d %d %.02f\n", v[i].g, v[i].p, v[i].pg);
}
fprintf(fout, "\n");
}
int main()
{
int N, G;
fin = openfile("data_in.txt", "r");
fout = openfile("data_out.txt", "w");
fscanf(fin, "%d %d", &N, &G);
rucsac v[15];
citire(v, N);
// afisare(v, N);
BubbleSort(v, N);
// afisare(v, N);
int k = 0;
int p = 0;
while (G != 0 && k < N)
{
if (G - v[k].g >= 0)
{
G = G - v[k].g;
p += v[k].p;
}
k++;
}
// fprintf(fout, "Profit max: %d,Greutate Ramasa:%d", p, G);
fprintf(fout, "%d", p);
}