#include <iostream>
#include <iterator>
#include <vector>
#include <algorithm>
template <class InputIterator1, class InputIterator2,
class OutputIterator>
OutputIterator merge_alternately ( InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2, InputIterator2 last2,
OutputIterator result)
{
size_t ct(0);
while(first1 != last1
and first2 != last2)
*result++ = (++ct % 2 ? *first1++ : *first2++);
std::copy(first1, last1, result);
std::copy(first2, last2, result);
return result;
}
int main()
{
std::vector<int> const a{1, 2, 3, 4, 5,},
b{6, 7, 8, 9, 10};
std::vector<int> c;
merge_alternately(a.begin(), a.end(),
b.begin(), b.end(),
std::back_inserter(c));
std::copy(c.begin(), c.end(), std::ostream_iterator<int>(std::cout, ", "));
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aXRlcmF0b3I+CiNpbmNsdWRlIDx2ZWN0b3I+CiNpbmNsdWRlIDxhbGdvcml0aG0+Cgp0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdGVyYXRvcjEsIGNsYXNzIElucHV0SXRlcmF0b3IyLAogICAgICAgICAgY2xhc3MgT3V0cHV0SXRlcmF0b3I+CiAgT3V0cHV0SXRlcmF0b3IgbWVyZ2VfYWx0ZXJuYXRlbHkgKCBJbnB1dEl0ZXJhdG9yMSBmaXJzdDEsIElucHV0SXRlcmF0b3IxIGxhc3QxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5wdXRJdGVyYXRvcjIgZmlyc3QyLCBJbnB1dEl0ZXJhdG9yMiBsYXN0MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dEl0ZXJhdG9yIHJlc3VsdCkKIHsKICAgICAgICBzaXplX3QgY3QoMCk7CiAgICAgICAgd2hpbGUoZmlyc3QxICE9IGxhc3QxCiAgICAgICAgICBhbmQgZmlyc3QyICE9IGxhc3QyKQogICAgICAgICAgICAgICAgKnJlc3VsdCsrID0gKCsrY3QgJSAyID8gKmZpcnN0MSsrIDogKmZpcnN0MisrKTsKCiAgICAgICAgc3RkOjpjb3B5KGZpcnN0MSwgbGFzdDEsIHJlc3VsdCk7CiAgICAgICAgc3RkOjpjb3B5KGZpcnN0MiwgbGFzdDIsIHJlc3VsdCk7CgogICAgICAgIHJldHVybiByZXN1bHQ7CiB9CgppbnQgbWFpbigpCnsKCiAgICAgICAgc3RkOjp2ZWN0b3I8aW50PiBjb25zdCBhezEsIDIsIDMsIDQsIDUsfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ7NiwgNywgOCwgOSwgMTB9OwogICAgICAgIHN0ZDo6dmVjdG9yPGludD4gICAgICAgYzsKCiAgICAgICAgbWVyZ2VfYWx0ZXJuYXRlbHkoYS5iZWdpbigpLCBhLmVuZCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgIGIuYmVnaW4oKSwgYi5lbmQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmJhY2tfaW5zZXJ0ZXIoYykpOwoKICAgICAgICBzdGQ6OmNvcHkoYy5iZWdpbigpLCBjLmVuZCgpLCBzdGQ6Om9zdHJlYW1faXRlcmF0b3I8aW50PihzdGQ6OmNvdXQsICIsICIpKTsKfQ==