Реализуйте алгоритм-шаблон для описанной ниже задачи, используя для получения и возврата данных итераторы минимально необходимой категории. Алгоритм должен разделять входную последовательность на две по заданному значению-медиане. Все значения меньшие либо равные медиане идут в первую результирующую последовательность, а все большие — во вторую.
template
void split_sequence (
InputIt first, InputIt last,
OutputIt1 out1First,
OutputIt2 out2First,
typename InputIt::value_type median
);
Продемонстрируйте работоспособность алгоритмов в тестовой программе. Используйте как минимум 3 разновидности выходных итераторов (прямой итератор, insert-итератор, потоковый итератор).