     cudaEventElapsedTime(&elapsed_time, start, stop);
 
     printf("\nKERNEL KNAPSACK\n");
+    printf("Number of products: %d\n", NUM_PRODUCTS);
+    printf("Number of buy options per product: %d\n", NUM_BUY_OPTIONS);
     printf("Vector Size: %d\n", num_total_buy_options);
     printf("Number of Threads: %d\n", NUM_THREADS);
     printf("Number of blocks (products): %d\n", NUM_PRODUCTS);

   unsigned int *tmp_best_buy_options = (unsigned int *) malloc( NUM_PRODUCTS * ELEMENTS_PER_BUY_OPTION * sizeof(unsigned int) );

   getBestBuyOptions(all_products_buy_options, tmp_best_buy_options);

   for (unsigned int product_iteration = 0; product_iteration < NUM_PRODUCTS * ELEMENTS_PER_BUY_OPTION; product_iteration += ELEMENTS_PER_BUY_OPTION)
   {


using namespace std;

#define DEBUG_LEVEL 1

#define ELEMENTS_PER_BUY_OPTION 2
#define STORE_ID_OFFSET 0
#define PRICE_OFFSET 1

#define NUM_PRODUCTS 8
#define NUM_BUY_OPTIONS 1024 // Debe ser igual al número de threads.

#define NUM_THREADS 1024 // El número mínimo de threads es 32 (por el tamaño de warp) y el maximo 1024.

void initAllProductsBuyOptions(unsigned int *all_products_buy_options);

