#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void printMatrix(const vector<vector<int>>& matrix) {
for (const vector<int>& row : matrix) {
for (int element : row) {
cout << element << " ";
}
cout << endl;
}
}
void sortAboveMainDiagonal(vector<vector<int>>& matrix) {
int n = matrix.size();
// Проходим по строкам матрицы, начиная со второй.
for (int row = 1; row < n; ++row) {
// Выделяем элементы, расположенные над главной диагональю.
vector<int> subdiagonal(row + 1);
for (int col = 0; col <= row; ++col) {
subdiagonal[col] = matrix[row - col][col];
}
// Сортируем элементы выделенного поддиагонального вектора.
sort(subdiagonal.begin(), subdiagonal.end());
// Располагаем отсортированные элементы обратно в матрицу.
for (int col = 0; col <= row; ++col) {
matrix[row - col][col] = subdiagonal[col];
}
}
}
int main() {
// Задаем тестовый массив
vector<vector<int>> matrix = {
{1, 3, 7},
{2, 5, 6},
{4, 8, 9},
};
// Выводим исходный массив
cout << "Исходный массив:" << endl;
printMatrix(matrix);
// Сортируем элементы над главной диагональю
sortAboveMainDiagonal(matrix);
// Выводим отсортированный массив
cout << "\nОтсортированный массив:" << endl;
printMatrix(matrix);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnZvaWQgcHJpbnRNYXRyaXgoY29uc3QgdmVjdG9yPHZlY3RvcjxpbnQ+PiYgbWF0cml4KSB7CiAgZm9yIChjb25zdCB2ZWN0b3I8aW50PiYgcm93IDogbWF0cml4KSB7CiAgICBmb3IgKGludCBlbGVtZW50IDogcm93KSB7CiAgICAgIGNvdXQgPDwgZWxlbWVudCA8PCAiICI7CiAgICB9CiAgICBjb3V0IDw8IGVuZGw7CiAgfQp9Cgp2b2lkIHNvcnRBYm92ZU1haW5EaWFnb25hbCh2ZWN0b3I8dmVjdG9yPGludD4+JiBtYXRyaXgpIHsKICBpbnQgbiA9IG1hdHJpeC5zaXplKCk7CgogIC8vINCf0YDQvtGF0L7QtNC40Lwg0L/QviDRgdGC0YDQvtC60LDQvCDQvNCw0YLRgNC40YbRiywg0L3QsNGH0LjQvdCw0Y8g0YHQviDQstGC0L7RgNC+0LkuCiAgZm9yIChpbnQgcm93ID0gMTsgcm93IDwgbjsgKytyb3cpIHsKICAgIC8vINCS0YvQtNC10LvRj9C10Lwg0Y3Qu9C10LzQtdC90YLRiywg0YDQsNGB0L/QvtC70L7QttC10L3QvdGL0LUg0L3QsNC0INCz0LvQsNCy0L3QvtC5INC00LjQsNCz0L7QvdCw0LvRjNGOLgogICAgdmVjdG9yPGludD4gc3ViZGlhZ29uYWwocm93ICsgMSk7CiAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPD0gcm93OyArK2NvbCkgewogICAgICBzdWJkaWFnb25hbFtjb2xdID0gbWF0cml4W3JvdyAtIGNvbF1bY29sXTsKICAgIH0KCiAgICAvLyDQodC+0YDRgtC40YDRg9C10Lwg0Y3Qu9C10LzQtdC90YLRiyDQstGL0LTQtdC70LXQvdC90L7Qs9C+INC/0L7QtNC00LjQsNCz0L7QvdCw0LvRjNC90L7Qs9C+INCy0LXQutGC0L7RgNCwLgogICAgc29ydChzdWJkaWFnb25hbC5iZWdpbigpLCBzdWJkaWFnb25hbC5lbmQoKSk7CgogICAgLy8g0KDQsNGB0L/QvtC70LDQs9Cw0LXQvCDQvtGC0YHQvtGA0YLQuNGA0L7QstCw0L3QvdGL0LUg0Y3Qu9C10LzQtdC90YLRiyDQvtCx0YDQsNGC0L3QviDQsiDQvNCw0YLRgNC40YbRgy4KICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8PSByb3c7ICsrY29sKSB7CiAgICAgIG1hdHJpeFtyb3cgLSBjb2xdW2NvbF0gPSBzdWJkaWFnb25hbFtjb2xdOwogICAgfQogIH0KfQoKaW50IG1haW4oKSB7CiAgLy8g0JfQsNC00LDQtdC8INGC0LXRgdGC0L7QstGL0Lkg0LzQsNGB0YHQuNCyCiAgdmVjdG9yPHZlY3RvcjxpbnQ+PiBtYXRyaXggPSB7CiAgICB7MSwgMywgN30sCiAgICB7MiwgNSwgNn0sCiAgICB7NCwgOCwgOX0sCiAgfTsKCiAgLy8g0JLRi9Cy0L7QtNC40Lwg0LjRgdGF0L7QtNC90YvQuSDQvNCw0YHRgdC40LIKICBjb3V0IDw8ICLQmNGB0YXQvtC00L3Ri9C5INC80LDRgdGB0LjQsjoiIDw8IGVuZGw7CiAgcHJpbnRNYXRyaXgobWF0cml4KTsKCiAgLy8g0KHQvtGA0YLQuNGA0YPQtdC8INGN0LvQtdC80LXQvdGC0Ysg0L3QsNC0INCz0LvQsNCy0L3QvtC5INC00LjQsNCz0L7QvdCw0LvRjNGOCiAgc29ydEFib3ZlTWFpbkRpYWdvbmFsKG1hdHJpeCk7CgogIC8vINCS0YvQstC+0LTQuNC8INC+0YLRgdC+0YDRgtC40YDQvtCy0LDQvdC90YvQuSDQvNCw0YHRgdC40LIKICBjb3V0IDw8ICJcbtCe0YLRgdC+0YDRgtC40YDQvtCy0LDQvdC90YvQuSDQvNCw0YHRgdC40LI6IiA8PCBlbmRsOwogIHByaW50TWF0cml4KG1hdHJpeCk7CgogIHJldHVybiAwOwp9