#include <algorithm>
#include <iostream>
#include <vector>
template <typename T>
std::vector<std::pair<T, std::size_t>>
adjacent_count(const std::vector<T>& v)
{
std::vector<std::pair<T, std::size_t>> res;
for (auto it = v.begin(), e = v.end(); it != e; /*Empty*/) {
const auto it2 = std::find_if(it, e, [&](const auto&x) { return x != *it; });
res.emplace_back(*it, std::distance(it, it2));
it = it2;
}
return res;
}
int main() {
const std::vector<int> v{ 1, 1, 2, 3, 3, 3, 1, 1 };
for (const auto& p : adjacent_count(v)) {
std::cout << p.first << ":" << p.second << std::endl;
}
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CnN0ZDo6dmVjdG9yPHN0ZDo6cGFpcjxULCBzdGQ6OnNpemVfdD4+CmFkamFjZW50X2NvdW50KGNvbnN0IHN0ZDo6dmVjdG9yPFQ+JiB2KQp7CiAgICBzdGQ6OnZlY3RvcjxzdGQ6OnBhaXI8VCwgc3RkOjpzaXplX3Q+PiByZXM7CiAgICAKICAgIGZvciAoYXV0byBpdCA9IHYuYmVnaW4oKSwgZSA9IHYuZW5kKCk7IGl0ICE9IGU7IC8qRW1wdHkqLykgewogICAgICAgIGNvbnN0IGF1dG8gaXQyID0gc3RkOjpmaW5kX2lmKGl0LCBlLCBbJl0oY29uc3QgYXV0byZ4KSB7IHJldHVybiB4ICE9ICppdDsgfSk7CiAgICAgICAgcmVzLmVtcGxhY2VfYmFjaygqaXQsIHN0ZDo6ZGlzdGFuY2UoaXQsIGl0MikpOwogICAgICAgIGl0ID0gaXQyOwogICAgfQogICAgcmV0dXJuIHJlczsKfQoKaW50IG1haW4oKSB7CiAgICBjb25zdCBzdGQ6OnZlY3RvcjxpbnQ+IHZ7IDEsIDEsIDIsIDMsIDMsIDMsIDEsIDEgfTsKCiAgICBmb3IgKGNvbnN0IGF1dG8mIHAgOiBhZGphY2VudF9jb3VudCh2KSkgewogICAgICAgIHN0ZDo6Y291dCA8PCBwLmZpcnN0IDw8ICI6IiA8PCBwLnNlY29uZCA8PCBzdGQ6OmVuZGw7CiAgICB9Cn0K