#include <algorithm>
#include <iostream>
#include <vector>
std::size_t count_consecutive_sequence(const std::vector<int> &v)
{
if (v.size() <= 1) {
return v.size();
}
std::size_t res = 0;
for (auto it = v.begin(); it != v.end(); ) {
auto e = std::adjacent_find(it, v.end(), [](int lhs, int rhs) { return lhs + 1 != rhs; });
if (it == e || it + 1 == v.end()) {
++it;
} else {
if (e != v.end()) {
++e;
}
res += distance(it, e);
it = e;
}
}
return res;
}
int main() {
std::cout << count_consecutive_sequence({22}) << std::endl; // 1
std::cout << count_consecutive_sequence({22, 23}) << std::endl; // 2
std::cout << count_consecutive_sequence({22, 46}) << std::endl; // 0
std::cout << count_consecutive_sequence({22, 46, 47}) << std::endl; // 2
std::cout << count_consecutive_sequence({22,23,33,44,45,46,55,56}) << std::endl; // 7
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKCnN0ZDo6c2l6ZV90IGNvdW50X2NvbnNlY3V0aXZlX3NlcXVlbmNlKGNvbnN0IHN0ZDo6dmVjdG9yPGludD4gJnYpCnsKICAgIGlmICh2LnNpemUoKSA8PSAxKSB7CiAgICAgICAgcmV0dXJuIHYuc2l6ZSgpOwogICAgfQoKICAgIHN0ZDo6c2l6ZV90IHJlcyA9IDA7CiAgICBmb3IgKGF1dG8gaXQgPSB2LmJlZ2luKCk7IGl0ICE9IHYuZW5kKCk7ICkgewogICAgICAgIGF1dG8gZSA9IHN0ZDo6YWRqYWNlbnRfZmluZChpdCwgdi5lbmQoKSwgW10oaW50IGxocywgaW50IHJocykgeyByZXR1cm4gbGhzICsgMSAhPSByaHM7IH0pOwogICAgICAgIAogICAgICAgIGlmIChpdCA9PSBlIHx8IGl0ICsgMSA9PSB2LmVuZCgpKSB7CiAgICAgICAgICAgICsraXQ7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAJaWYgKGUgIT0gdi5lbmQoKSkgewogICAgICAgIAkJKytlOwogICAgICAgIAl9CiAgICAgICAgICAgIHJlcyArPSBkaXN0YW5jZShpdCwgZSk7CiAgICAgICAgICAgIGl0ID0gZTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gcmVzOwp9CgppbnQgbWFpbigpIHsKCXN0ZDo6Y291dCA8PCBjb3VudF9jb25zZWN1dGl2ZV9zZXF1ZW5jZSh7MjJ9KSA8PCBzdGQ6OmVuZGw7ICAgICAvLyAxCglzdGQ6OmNvdXQgPDwgY291bnRfY29uc2VjdXRpdmVfc2VxdWVuY2UoezIyLCAyM30pIDw8IHN0ZDo6ZW5kbDsgLy8gMgoJc3RkOjpjb3V0IDw8IGNvdW50X2NvbnNlY3V0aXZlX3NlcXVlbmNlKHsyMiwgNDZ9KSA8PCBzdGQ6OmVuZGw7IC8vIDAKCXN0ZDo6Y291dCA8PCBjb3VudF9jb25zZWN1dGl2ZV9zZXF1ZW5jZSh7MjIsIDQ2LCA0N30pIDw8IHN0ZDo6ZW5kbDsgLy8gMgoJc3RkOjpjb3V0IDw8IGNvdW50X2NvbnNlY3V0aXZlX3NlcXVlbmNlKHsyMiwyMywzMyw0NCw0NSw0Niw1NSw1Nn0pIDw8IHN0ZDo6ZW5kbDsgLy8gNwp9