/******************************************************************************

Welcome to GDB Online.
GDB online is an online compiler and debugger tool for C/C++.
Code, Compile, Run and Debug online from anywhere in world.

*******************************************************************************/#include <iostream>
#include <cstdlib> // Para rand()
#include <ctime>   // Para time()

using namespace std;

int main() {
    // 1. Configurar dimensiones (Usamos constantes para evitar errores de memoria)
    const int MAX = 20; 
    int n, m, k;

    cout << "Cantidad de pasillos: "; cin >> n;
    cout << "Cantidad de estantes: "; cin >> m;
    cout << "Posiciones por estante: "; cin >> k;

    int matriz[MAX][MAX][MAX]; // Declaramos con un tamaño máximo seguro
    srand(time(0)); // Semilla para que los números cambien en cada ejecución

    // 2. Llenar almacén con valores aleatorios (0-100)
    for(int i = 0; i < n; i++) {
        for(int j = 0; j < m; j++) {
            for(int z = 0; z < k; z++) {
                matriz[i][j][z] = rand() % 101; 
            }
        }
    }

    // --- LÓGICA DE BÚSQUEDA ---
    int mayorInventario = -1;
    int indicePasilloMayor = 0;

    int valorMinimo = 101; 
    int minI, minJ, minK;

    int contadorBajoStock = 0;

    for(int i = 0; i < n; i++) {
        int sumaPasillo = 0; // Para calcular el total del pasillo actual

        for(int j = 0; j < m; j++) {
            for(int z = 0; z < k; z++) {
                int actual = matriz[i][j][z];
                
                // Acumular para el inventario del pasillo
                sumaPasillo += actual;

                // Buscar el valor mínimo y guardar su posición (i, j, k)
                if(actual < valorMinimo) {
                    valorMinimo = actual;
                    minI = i; minJ = j; minK = z;
                }

                // Contar posiciones con menos de 10 productos
                if(actual < 10) {
                    contadorBajoStock++;
                }
            }
        }

        // Comparar inventario total del pasillo
        if(sumaPasillo > mayorInventario) {
            mayorInventario = sumaPasillo;
            indicePasilloMayor = i;
        }
    }

    // 3. RESULTADOS
    cout << "\n--- RESULTADOS DEL ALMACEN ---" << endl;
    cout << "1. Pasillo con mayor inventario: Pasillo " << indicePasilloMayor 
         << " (Total: " << mayorInventario << " productos)" << endl;
    
    cout << "2. Producto con valor minimo: " << valorMinimo 
         << " en posicion (Pasillo: " << minI << ", Estante: " << minJ << ", Pos: " << minK << ")" << endl;
    
    cout << "3. Cantidad de posiciones que necesitan stock (< 10): " << contadorBajoStock << endl;

    return 0;
}
    