Scrieţi un program care citeşte un tablou bidimensional cu n linii şi n coloane (n<=30)
care memorează numere întregi distincte de cel mult patru cifre frecare. Să se ordoneze
crescător elementele situate pe diagonala principală a matricei.
Răspunsuri la întrebare
#include <bits/stdc++.h>
using namespace std;
void qSort(vector<vector<int>>& m, int low, int high) {
if(low < high) {
int p = low;
for(int i = low; i < high; ++i) {
if(m[i][i] < m[high][high]) {
swap(m[i][i], m[p][p]);
++p;
}
}
swap(m[p][p], m[high][high]);
qSort(m, p+1, high);
qSort(m, low, p-1);
}
}
int main()
{
int n;
cin >> n;
vector<vector<int>> m;
m.reserve(n);
for(int i = 0; i < n; i++) {
vector<int> row(n);
for(int j = 0; j < n; j++) {
cin >> row[j];
}
m.push_back(row);
}
qSort(m, 0, n-1);
for(auto i : m) {
for(auto j : i) cout << setw(4) << j;
cout << endl;
}
return 0;
}