#include <iostream>
#include <vector>
#include <algorithm>
int main()
{
std::vector<int> test{5, 3, 8, 4, -1, 1, 11, 9, 6};
// get the position of -1
auto itr = std::find(test.begin(), test.end(), -1);
// sort all elements so that -1 will be moved to end of vector
std::sort(test.begin(), test.end(), [](const int& lhs, const int& rhs )
{
if( lhs == -1 ) return false;
if( rhs == -1 ) return true;
return lhs < rhs;
});
test.erase(test.end()-1); // now erase it from end
test.insert(itr, -1); // add to the erlier position
for(const auto& it: test)
std::cout << it << " ";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKaW50IG1haW4oKQp7CiAgICBzdGQ6OnZlY3RvcjxpbnQ+IHRlc3R7NSwgMywgOCwgNCwgLTEsIDEsIDExLCA5LCA2fTsKICAgIC8vIGdldCB0aGUgcG9zaXRpb24gb2YgLTEKICAgIGF1dG8gaXRyID0gc3RkOjpmaW5kKHRlc3QuYmVnaW4oKSwgdGVzdC5lbmQoKSwgLTEpOwogICAgLy8gc29ydCBhbGwgZWxlbWVudHMgc28gdGhhdCAtMSB3aWxsIGJlIG1vdmVkIHRvIGVuZCBvZiB2ZWN0b3IKICAgIHN0ZDo6c29ydCh0ZXN0LmJlZ2luKCksIHRlc3QuZW5kKCksIFtdKGNvbnN0IGludCYgbGhzLCBjb25zdCBpbnQmIHJocyApCiAgICAgICAgewogICAgICAgICAgICBpZiggbGhzID09IC0xICkgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICBpZiggcmhzID09IC0xICkgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIHJldHVybiBsaHMgPCByaHM7CiAgICAgICAgfSk7CgogICAgdGVzdC5lcmFzZSh0ZXN0LmVuZCgpLTEpOyAgIC8vICBub3cgZXJhc2UgaXQgZnJvbSBlbmQKICAgIHRlc3QuaW5zZXJ0KGl0ciwgLTEpOyAgICAgICAvLyAgYWRkIHRvIHRoZSBlcmxpZXIgcG9zaXRpb24KCiAgICBmb3IoY29uc3QgYXV0byYgaXQ6IHRlc3QpCiAgICAgICAgc3RkOjpjb3V0IDw8IGl0IDw8ICIgIjsKCiAgICByZXR1cm4gMDsKfQoK