Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <iostream>
- #include <fstream>
- #include "heaps.h"
- using namespace std;
- int main()
- {
- long int i;
- long int n_item,carga;
- scanf("%li",&n_item); // Leer la cantidad de elementos
- float arreglo_precio[n_item+1]; // Arreglo para precios
- float arreglo_valor[n_item+1]; // Arreglo para valores
- float arreglo_relaciones[n_item+1];
- float arreglo_particiones[n_item+1];
- for (i = 1; i < n_item+1; i++)
- {
- arreglo_particiones[i] = 0;
- }
- for (i = 1; i < n_item+1; i++) scanf("%f",&arreglo_precio[i]);
- for (i = 1; i < n_item+1; i++) scanf("%f",&arreglo_valor[i]);
- for (i = 1; i < n_item+1; i++) arreglo_relaciones[i] = float(arreglo_valor[i]/arreglo_precio[i]);
- scanf("%li",&carga);
- arr_Heap heap_max(n_item+100);
- for (i = 1; i < n_item+1; i++) heap_max.insert(arreglo_relaciones[i],i);
- for (i = 1; i < n_item+1 ; i++)
- {
- printf("Carga restante: %li\n",carga);
- if (carga > 0)
- {
- if ((carga - arreglo_precio[heap_max.posMax()])>0)
- {
- arreglo_particiones[heap_max.posMax()] = 1.000;
- carga = carga - arreglo_precio[heap_max.posMax()];
- }
- else
- {
- arreglo_particiones[heap_max.posMax()] = (1.0*carga)/arreglo_precio[heap_max.posMax()];
- carga = carga - arreglo_precio[heap_max.posMax()]*arreglo_particiones[heap_max.posMax()];
- }
- }
- heap_max.removeMax();
- }
- for (i = 1; i < n_item+1; i++)
- {
- printf("Paquete %li con peso %.0f de valor %.0f con particion %.6f\n",i,arreglo_precio[i],arreglo_valor[i],arreglo_particiones[i]);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement