fork(1) download
  1. #include <iostream>
  2. #include <vector>
  3. #include <unordered_map>
  4.  
  5. std::pair<int, int> find_range_with_sum(std::vector<int> const& numbers, int k) {
  6. std::unordered_map<int, int> sum_map;
  7. sum_map.emplace(0, 0);
  8. int sum = 0;
  9. for (int i = 0; i < numbers.size(); i++) {
  10. sum += numbers[i];
  11. auto it = sum_map.find(sum - k);
  12. if (it != sum_map.end()) {
  13. return std::make_pair(it->second, i);
  14. }
  15. sum_map.emplace(sum, i+1);
  16. }
  17. return std::make_pair(-1, -1);
  18. }
  19.  
  20. int main() {
  21. std::vector<int> numbers = {-1, 5, -3, 5, 1, 2, -4, 6, -2};
  22. auto range = find_range_with_sum(numbers, 1);
  23.  
  24. //output
  25. std::cout << range.first+1 << ". to " << range.second+1 << "." << std::endl;
  26. return 0;
  27. }
Success #stdin #stdout 0s 3416KB
stdin
Standard input is empty
stdout
1. to 3.