#include <iostream>
using namespace std;
int main() {
int N, M;
// Ввод размеров матрицы
cout << "Введите количество строк N: ";
cin >> N;
cout << "Введите количество столбцов M: ";
cin >> M;
// Создание матрицы N x M
int matrix[100][100]; // ограничим размер для простоты
// Ввод элементов матрицы
cout << "Введите элементы матрицы:\n";
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
cin >> matrix[i][j];
}
}
// Поиск минимального элемента и его координат
int min_val = matrix[0][0];
int min_row = 0, min_col = 0;
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
if (matrix[i][j] < min_val) {
min_val = matrix[i][j];
min_row = i;
min_col = j;
}
}
}
cout << "Минимальный элемент: " << min_val << endl;
cout << "Его позиция: строка " << min_row << ", столбец " << min_col << endl;
// Проверяем, можно ли поменять местами
if (min_row >= M || min_col >= N) {
cout << "Невозможно поменять местами: размеры матрицы не позволяют.\n";
cout << "Строка имеет длину " << M << ", столбец имеет высоту " << N << endl;
return 1;
}
// Меняем местами строку и столбец
for (int k = 0; k < min_row && k < min_col; k++) {
int temp = matrix[min_row][k];
matrix[min_row][k] = matrix[k][min_col];
matrix[k][min_col] = temp;
}
// Особый случай - обмен элемента на пересечении (остается на месте)
// Элемент matrix[min_row][min_col] не меняется
// Если строка длиннее столбца
if (M > N) {
for (int j = min_col + 1; j < M; j++) {
if (j == min_col) continue;
// Не можем обменять, так как соответствующих элементов в столбце нет
}
}
// Если столбец длиннее строки
else if (N > M) {
for (int i = min_row + 1; i < N; i++) {
if (i == min_row) continue;
// Не можем обменять, так как соответствующих элементов в строке нет
}
}
// Вывод результата
cout << "Матрица после обмена:\n";
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
cout << matrix[i][j] << " ";
}
cout << endl;
}
return 0;
}