#include #include #include #include #include #include using namespace std; int main() { std::vector numbers; std::vector ordinary; int number; int n, minimumCurrent, minimum = 0, indexMin, currentNumber, indexPrint, indexPrintMax; bool found; bool first = false; cin >> n; for (int i = 1; i <= n*n; i++) { cin >> number; if (number <= minimum && numbers.size() == n) { ordinary.push_back(number); } else { found = false; minimumCurrent = std::numeric_limits::max(); for (int j = 0; j < numbers.size(); j++) { currentNumber = numbers.at(j); if (currentNumber == minimum) { indexMin = j; found = true; } if (currentNumber < minimumCurrent) { minimumCurrent = currentNumber; } } if (found && numbers.size() == n) { ordinary.push_back(numbers.at(indexMin)); numbers.erase(numbers.begin() + indexMin); minimumCurrent = std::numeric_limits::max(); for (int j = 0; j < numbers.size(); j++) { currentNumber = numbers.at(j); if (currentNumber < minimumCurrent) { minimumCurrent = currentNumber; } } minimum = minimumCurrent; } if (number < minimum) { minimum = number; } if (first == false) { minimum = number; first = true; } numbers.push_back(number); } } indexPrintMax = 0; indexPrint = 0; for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { if (i == j) { cout << numbers.at(indexPrintMax) << " "; indexPrintMax++; } else { cout << ordinary.at(indexPrint) << " "; indexPrint++; } } cout << endl; } system("PAUSE"); return 0; }