#include <vector>
#include <iostream>
std::vector<std::pair<int, int>> rle(const std::vector<int>& in)
{
std::vector<std::pair<int, int>> out;
for (int i: in)
{
if (out.empty() || out.back().first != i)
{
out.emplace_back(std::make_pair(i, 1));
}
else
{
++out.back().second;
}
}
return out;
}
int main()
{
auto out = rle({1,1,1,3,4,2,2,2,2,51});
for (const auto& pair : out)
{
std::cout << pair.first << ": " << pair.second << ", ";
}
std::cout << std::endl;
}
I2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPGludCwgaW50Pj4gcmxlKGNvbnN0IHN0ZDo6dmVjdG9yPGludD4mIGluKQp7CglzdGQ6OnZlY3RvcjxzdGQ6OnBhaXI8aW50LCBpbnQ+PiBvdXQ7Cglmb3IgKGludCBpOiBpbikKCXsKCQkJIGlmIChvdXQuZW1wdHkoKSB8fCBvdXQuYmFjaygpLmZpcnN0ICE9IGkpCgkJCSB7CgkJCQkJIG91dC5lbXBsYWNlX2JhY2soc3RkOjptYWtlX3BhaXIoaSwgMSkpOwoJCQkgfQoJCQkgZWxzZQoJCQkgewoJCQkJCSArK291dC5iYWNrKCkuc2Vjb25kOwoJCQkgfQoJfQoJcmV0dXJuIG91dDsKfQoKaW50IG1haW4oKQp7CglhdXRvIG91dCA9IHJsZSh7MSwxLDEsMyw0LDIsMiwyLDIsNTF9KTsKCWZvciAoY29uc3QgYXV0byYgcGFpciA6IG91dCkKCXsKCQlzdGQ6OmNvdXQgPDwgcGFpci5maXJzdCA8PCAiOiAiIDw8IHBhaXIuc2Vjb25kIDw8ICIsICI7Cgl9CglzdGQ6OmNvdXQgPDwgc3RkOjplbmRsOwp9Cg==