#include <algorithm>
#include <functional>
#include <iterator>
#include <locale>
#include <iostream>
int main()
{
setlocale(LC_ALL, "");
int arr[] = {0,1,-5,2,0,-4,3,4,0,5,6,-3,0,7,8,-2,9,10};
const size_t N = sizeof(arr) / sizeof(arr[0]);
std::partition(arr, arr+N, std::bind2nd(std::equal_to<int>(), 0));
typedef std::ostream_iterator<int> O;
std::copy(arr, arr+N, O(std::cout, " "));
return 0;
}