#include #include #include #include using namespace std; vector data; void quicksort(vector::iterator begin, vector::iterator end) try { if (end - begin < 2) return; auto rhsBegin = partition(begin + 1, end, bind2nd(less(), *begin)); auto lhsEnd = rhsBegin - 1; swap(*begin, *lhsEnd); thread lhs(quicksort, begin, lhsEnd); thread rhs(quicksort, rhsBegin, end); lhs.join(); rhs.join(); } catch (exception const &exc) { cerr << exc.what() << '\n'; } int main() { int value; while (cin >> value) data.push_back(value); quicksort(data.begin(), data.end()); for (auto el: data) cout << el << ' '; cout << '\n'; }