#include <iostream>
#include <iterator>
#include <vector>
#include <algorithm>
int main() {
int item = 10;
std::vector<int> iArray;
std::generate_n(std::back_inserter(iArray), item , [] ()-> int {
int tmp = std::rand() % 10;
return (std::rand() % 10 > 5) ? tmp : -tmp;
});
std::cout << "Array is: " << std::endl;
std::copy(iArray.begin(), iArray.end(), std::ostream_iterator<int>(std::cout, " "));
std::sort(iArray.begin(), iArray.end(), [](const auto &a, const auto &b) -> bool {
if (a == 0) return true;
return a < b;
});
std::cout << "\nSorted array is: " << std::endl;
std::copy(iArray.begin(), iArray.end(), std::ostream_iterator<int>(std::cout, " "));
return 0;
}
ICAgICNpbmNsdWRlIDxpb3N0cmVhbT4KICAgICNpbmNsdWRlIDxpdGVyYXRvcj4KICAgICNpbmNsdWRlIDx2ZWN0b3I+CiAgICAjaW5jbHVkZSA8YWxnb3JpdGhtPgogICAgIAogICAgaW50IG1haW4oKSB7CiAgICAgIGludCBpdGVtID0gMTA7CiAgICAgIHN0ZDo6dmVjdG9yPGludD4gaUFycmF5OwogICAgICBzdGQ6OmdlbmVyYXRlX24oc3RkOjpiYWNrX2luc2VydGVyKGlBcnJheSksIGl0ZW0gLCBbXSAoKS0+IGludCB7IAogICAgICAgIGludCB0bXAgPSBzdGQ6OnJhbmQoKSAlIDEwOwkKICAgICAgICByZXR1cm4gKHN0ZDo6cmFuZCgpICUgMTAgPiA1KSA/IHRtcCA6IC10bXA7CiAgICAgIH0pOwogICAgICBzdGQ6OmNvdXQgPDwgIkFycmF5IGlzOiAiIDw8IHN0ZDo6ZW5kbDsKICAgICAgc3RkOjpjb3B5KGlBcnJheS5iZWdpbigpLCBpQXJyYXkuZW5kKCksIHN0ZDo6b3N0cmVhbV9pdGVyYXRvcjxpbnQ+KHN0ZDo6Y291dCwgIiAiKSk7CiAgICAgIHN0ZDo6c29ydChpQXJyYXkuYmVnaW4oKSwgaUFycmF5LmVuZCgpLCBbXShjb25zdCBhdXRvICZhLCBjb25zdCBhdXRvICZiKSAtPiBib29sIHsKICAgICAgICBpZiAoYSA9PSAwKSByZXR1cm4gdHJ1ZTsKICAgICAgICByZXR1cm4gYSA8IGI7IAogICAgICB9KTsKICAgICAgc3RkOjpjb3V0IDw8ICJcblNvcnRlZCBhcnJheSBpczogIiA8PCBzdGQ6OmVuZGw7CiAgICAgIHN0ZDo6Y29weShpQXJyYXkuYmVnaW4oKSwgaUFycmF5LmVuZCgpLCBzdGQ6Om9zdHJlYW1faXRlcmF0b3I8aW50PihzdGQ6OmNvdXQsICIgIikpOwogICAgICByZXR1cm4gMDsKICAgIH0=