int main() {
    int filas;
    int columnas;
    int elemento;
    int minFila;
    int maximoMinimo = 0;
    int posFila = 0;
    int posColumna = 0;
    int i;

    Matriz matriz;

    cin >> filas;
    cin >> columnas;

    for (i = 0; i < (filas * columnas); i++) {
        cin >> elemento;

        try {
            matriz.Aniade(columnas, elemento);
        } catch (logic_error excepcion) {
            cout << "Error logico: " << excepcion.what();
        }
    }

    for (i = 0; i < filas; i++) {
        minFila = matriz.obtenerMinFila(i, columnas);

        if (minFila > maximoMinimo) {
            maximoMinimo = minFila;
            posFila = i;
            posColumna = minFila;
        }

    }

    cout << posFila << " " << posColumna;

    cout << "\n\n";
}
int main() {
    int filas;
    int columnas;
    int valorAniadir;

    Matriz matriz;

    cin >> filas;
    cin >> columnas;

    for (int i = 0; i < (filas * columnas); i++) {
        cin >> valorAniadir;

        try {
            matriz.Aniade(columnas, valorAniadir);
        } catch (logic_error excepcion) {
            cout << "Error logico: " << excepcion.what();
        }
    }

    try {
        matriz.ordenarPorFilas(filas, columnas);
    } catch (logic_error excepcion) {
        cout << "Error logico: " << excepcion.what();
    }

    cout << "\n\n";

    cout << filas << " " << columnas << endl;

    for (int i = 0; i < filas; i++) {

        for (int j = 0; j < columnas; j++)
            cout << matriz.GetValor(i, j) << " ";

        cout << endl;
    }

    cout << "\n\n";
}