#include <algorithm>
#include <vector>
#include <iterator>
#include <iostream>
int main()
{
std::vector<int> v { 1, 1, 2, 3, 3, 5, 5, 5 }; // must be sorted...
auto i = begin(v);
while (i != end(v))
{
auto ub = upper_bound(begin(v), end(v), *i);
std::cout << distance(i, ub) << std::endl;
i = ub;
}
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGl0ZXJhdG9yPgojaW5jbHVkZSA8aW9zdHJlYW0+CgppbnQgbWFpbigpCnsKICAgIHN0ZDo6dmVjdG9yPGludD4gdiB7IDEsIDEsIDIsIDMsIDMsIDUsIDUsIDUgfTsgLy8gbXVzdCBiZSBzb3J0ZWQuLi4KCiAgICBhdXRvIGkgPSBiZWdpbih2KTsKICAgIHdoaWxlIChpICE9IGVuZCh2KSkKICAgIHsKICAgICAgICBhdXRvIHViID0gdXBwZXJfYm91bmQoYmVnaW4odiksIGVuZCh2KSwgKmkpOwogICAgICAgIHN0ZDo6Y291dCA8PCBkaXN0YW5jZShpLCB1YikgPDwgc3RkOjplbmRsOwogICAgICAgIGkgPSB1YjsKICAgIH0KfQ==