#include <iostream> using namespace std; int main() { int n; int m; std::cout << "Enter desired max of the array: " << endl; cin >> n; cin >> m; int* arr = new int [n * m]; // создание размерности матрицы из данных с клавиатуры for (int i = 0; i < n * m; ++i) { cin >> arr[i]; } for (int i = 0; i < n * m; i++) { for (int j = 0; j < n * m - 1; j++) { if (arr[j] > arr[j + 1]) { arr[j] += arr[j + 1]; arr[j + 1] = arr[j] - arr[j + 1]; arr[j] = arr[j] - arr[j + 1]; } } } int matrix[20][20]; bool b_matrix[20][20]; for (int i = 0; i < 20; ++i) for (int j = 0; j < 20; ++j) b_matrix[i][j] = false; int speed_x = 1; int speed_y = 0; int x = 0, y = 0; int turn_counter = 0; } for (int i = 0; i < n * m; ++i) { matrix[x][y] = arr[i]; b_matrix[x][y] = true; if (b_matrix[x + speed_x][y + speed_y] or (0 > speed_x + x or speed_x + x > n - 1) or (0 > speed_y + y or speed_y + y > m - 1)) { turn_counter += 1; switch (turn_counter % 4) { case 1: { speed_x = 0; speed_y = 1; break; } case 2: { speed_x = -1; speed_y = 0; break; } case 3: { speed_x = 0; speed_y = -1; break; } case 0: { speed_x = 1; speed_y = 0; break; } default: break; } } x += speed_x; y += speed_y; } for (int i = 0; i < n; ++i) { for (int j = 0; j < m; ++j) { cout << matrix[j][i] << " "; } cout << endl; } return 0;