 
 __global__ void KernelKnapsack(unsigned int *total_buy_options, unsigned int *best_buy_options)
 {
-    __shared__ float tmp_best_buy_options[1024];
+    __shared__ unsigned int tmp_best_buy_options[1024];
     unsigned int stride;
 
     unsigned int thread_id = threadIdx.x;

    cudaEventCreate(&stop);

    // Obtener Memoria en el device
    cudaMalloc( (float**) &device_all_products_buy_options, total_buy_options_size );
    cudaMalloc( (float**) &device_best_buy_options, best_buy_options_size );

    // Copiar datos desde el host en el device
    cudaMemcpy(device_all_products_buy_options, host_all_products_buy_options, total_buy_options_size, cudaMemcpyHostToDevice);

    }
}

void printBestBuyOptions(unsigned int *best_buy_options)
{
    cout << endl <<"Best products buy options:" << endl;
    for (unsigned int i = 0; i < NUM_PRODUCTS * ELEMENTS_PER_BUY_OPTION; i += ELEMENTS_PER_BUY_OPTION)
    {
        cout << "Best buy option for product_id: " << i / ELEMENTS_PER_BUY_OPTION << endl;
        cout << "\tstore_id: " << best_buy_options[i + STORE_ID_OFFSET] << endl;
