Дана вещественная матрица размером N, все элементы которой различны. Найти скалярное произведение строки, в которой находится наибольший элемент матрицы, на столбец с наименьшим элементом

Помогите пожалуйста написать код на C++.

Дана вещественная матрица размером N, все элементы которой различны. Найти скалярное произведение строки, в которой находится наибольший элемент матрицы, на столбец с наименьшим элементом.

В чем именно проблема? Что получилось, что не получилось?

Когда идёт скалярное произведение почему то выбирается столбец и строка в котором большая и меньшая сумма элементов, а нужно с максимальным и минимальным элементом

#include <iostream>
#include <iomanip>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "ru");
 
    int N = 0, i, j;
    cout << "Вводите размерность матрицы (должны больше 0):" << endl;
    while (N < 1)
    {
        cout << "\tN = ";
        cin >> N;
    }
 
    double** a = new double* [N];
    cout << "Вводите элементы матрицы:" << endl;
    for (i = 0; i < N; i++)
    {
        a[i] = new double[N];
        for (j = 0; j < N; j++)
        {
            cout << "\ta[" << i + 1 << "][" << j + 1 << "] = ";
            cin >> a[i][j];
        }
        cout << endl;
    }
 
    int imaxRow = 0, jminCol = 0;
    cout << "Матрица после ввода:" << endl;
    for (i = 0; i < N; i++)
    {
        for (j = 0; j < N; j++)
        {
            cout << setw(5) << a[i][j];
            if (a[imaxRow][j] < a[i][j])
                imaxRow = i;
            if (a[i][jminCol] > a[i][j])
                jminCol = j;
        }
        cout << endl;
    }
    long double mulS = 0.0;
    for (i = 0; i < N; i++)
        mulS += a[imaxRow][i] * a[i][jminCol];
    cout << "Скалярное произведение: " << mulS;
    cout << endl;
    system("pause");
    return 0;
}

Это почему так решили?
Чтобы проще было понять в чем проблема для начала стоит добавить вывод номеров этих столбца и строки.

Код, скорее всего, копипащен со смежного какого-то задания и выдается как попытка решения

#include <iostream>
#include <iomanip>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "ru");
 
    int N = 0, i, j;
    cout << "Вводите размерность матрицы (должны больше 0):" << endl;
    while (N < 1)
    {
        cout << "\tN = ";
        //cin >> N;
        N = 5;
    }
 
    double** a = new double* [N];
    cout << "Вводите элементы матрицы:" << endl;
    for (i = 0; i < N; i++)
    {
        a[i] = new double[N];
        for (j = 0; j < N; j++)
        {
            //cout << "\ta[" << i + 1 << "][" << j + 1 << "] = ";
            //cin >> a[i][j];
            a[i][j] = -5 + ( std::rand() % ( 20 - 5 + 1 ) );
        }
        cout << endl;
    }
 
    int imaxRow = 0, iminCol = 0;
    int jmaxRow = 0, jminCol = 0;
    
    cout << "Матрица после ввода:" << endl;
    for (i = 0; i < N; i++)
    {
        for (j = 0; j < N; j++)
        {
            cout << setw(5) << a[i][j];
            if (a[imaxRow][jmaxRow] < a[i][j])
                {
                    imaxRow = i;
                    jmaxRow = j;
                }
                
            if (a[iminCol][jminCol] > a[i][j])
            {
                iminCol = i;
                jminCol = j;
            }
        }
        cout << endl;
    }
    cout << "Максимум: " << a[imaxRow][jmaxRow] <<" строка № " << imaxRow << endl;
    cout << "Минимум: " << a[iminCol][jminCol] <<" столбец № " <<jminCol << endl;
    long double mulS = 0.0;
    for (i = 0; i < N; i++)
    {
        mulS += a[imaxRow][i] * a[i][jminCol];
        cout << "a[" << imaxRow << "," << i <<"] *  a[" << i<<"," << jminCol << "]  = " << a[imaxRow][i] << " * " << a[i][jminCol] << " = " << a[imaxRow][i] * a[i][jminCol] << " SUMA = " << mulS << endl;
    }
    cout << "Скалярное произведение: " << mulS;
    cout << endl;
    system("pause");
    return 0;
}

https://onlinegdb.com/HJRUueODu