fork download
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <tuple>
  4. #include <vector>
  5.  
  6. int main()
  7. {
  8. const std::vector<int> inputs = {3,2,6,3,7,1,8};
  9. int left = 1; // Number 3
  10. int right = 4; // Numbers 2,6,3,7
  11. int middle = 2; // Numbers 1,8
  12.  
  13. for (int i = left + right; i < left + right + middle; ++i) {
  14. auto as_tuple = [&, i](int e) { return std::make_tuple(e < inputs[i], std::abs(e - inputs[i]));};
  15. auto comparer = [&, i](int lhs, int rhs){ return as_tuple(lhs) < as_tuple(rhs); };
  16. auto it1 = std::min_element(inputs.begin(), inputs.begin() + left, comparer);
  17. auto it2 = std::min_element(inputs.begin() + left,
  18. inputs.begin() + left + right,
  19. comparer);
  20. std::cout << *it1 << ", " << *it2
  21. << " --> index "
  22. << std::distance(inputs.begin(), it1) << ", "
  23. << std::distance(inputs.begin(), it2) << std::endl;
  24. }
  25. }
Success #stdin #stdout 0s 15240KB
stdin
Standard input is empty
stdout
3, 2 --> index 0, 1
3, 7 --> index 0, 4