#include <iostream> #include <vector> using namespace std; // int swap(int &a, int& b){ // int c = a; // a = b; // return b = c; // } int sorted[1000] = {0}; void minElement (vector <int> v, int& vitrimin, int& min){ min = 9999; for (int i = 0; i < v.size(); i++){ if (min > v[i] && sorted[v[i]] == 0){ min = v[i]; vitrimin = i; } } sorted[min] = 1; } void maxElement (vector <int> v, int& vitrimax, int& max){ max = -9999; for (int i = 0; i < v.size(); i++){ if (max < v[i] && sorted[v[i]] == 0){ max = v[i]; vitrimax = i; } } sorted[max] = 1; } // 1 4 7 -> 4 1 7 -> 1 4 7 int main() { int n; cin>>n; int min; int max; vector <int> v; int vitrimax; int vitrimin; for (int i = 0; i < n; i++){ int value; cin>>value; v.push_back(value); } for (int i = 0; i < n; i++) { if ((i + 1) % 2 != 0) { // cout << i << " "; minElement(v, vitrimin, min); // cout << min << " " << vitrimin; while (min - 1 != vitrimin) { swap(v[vitrimin - 1], v[vitrimin]); vitrimin--; } } else { maxElement(v, vitrimax, max); // cout << min << " " << vitrimin; while (max - 1 != vitrimax && vitrimax <= n) { swap(v[vitrimax + 1], v[vitrimax]); vitrimax++; } } // else { // maxElement(v, vitrimax, max); // while (max - 1 != vitrimax) { // if (v[vitrimax + 1] < v[vitrimax]) { // swap(v[vitrimax + 1], v[vitrimax]); // } // vitrimax++; // } // } } // for (auto x : v) { // cout << x << " "; // } // 3 1 4 2 for (auto x : v) { cout << x << " "; } }