fork(3) download
  1. #include <algorithm>
  2. #include <iostream>
  3. #include <vector>
  4.  
  5.  
  6. std::size_t count_consecutive_sequence(const std::vector<int> &v)
  7. {
  8. if (v.size() <= 1) {
  9. return v.size();
  10. }
  11.  
  12. std::size_t res = 0;
  13. for (auto it = v.begin(); it != v.end(); ) {
  14. auto e = std::adjacent_find(it, v.end(), [](int lhs, int rhs) { return lhs + 1 != rhs; });
  15.  
  16. if (it == e || it + 1 == v.end()) {
  17. ++it;
  18. } else {
  19. if (e != v.end()) {
  20. ++e;
  21. }
  22. res += distance(it, e);
  23. it = e;
  24. }
  25. }
  26. return res;
  27. }
  28.  
  29. int main() {
  30. std::cout << count_consecutive_sequence({22}) << std::endl; // 1
  31. std::cout << count_consecutive_sequence({22, 23}) << std::endl; // 2
  32. std::cout << count_consecutive_sequence({22, 46}) << std::endl; // 0
  33. std::cout << count_consecutive_sequence({22, 46, 47}) << std::endl; // 2
  34. std::cout << count_consecutive_sequence({22,23,33,44,45,46,55,56}) << std::endl; // 7
  35. }
Success #stdin #stdout 0s 3460KB
stdin
Standard input is empty
stdout
1
2
0
2
7