#include <iostream>
#include <vector>
#include <utility>
const std::vector<std::pair<size_t, size_t>> get(const std::vector<size_t> &v, size_t r) {
std::vector<std::pair<size_t, size_t>> result;
for(size_t i = 0; i < v.size(); ++i) {
size_t prev = v[i];
for(size_t j = i + 1; j < v.size(); ++j) {
if(prev + r >= v[j]) {
prev = v[j];
result.push_back(std::pair<size_t, size_t>(i, j));
} else break;
}
}
return result;
}
std::ostream &operator<<(std::ostream &os, const std::vector<std::pair<size_t, size_t>> &rhs) {
for(const auto &i: rhs) {
os << "{" << i.first << ", " << i.second << "}" << std::endl;
}
return os;
}
int main() {
std::vector<size_t> v = {1, 4, 5, 8, 9, 10, 12};
size_t r = 2;
std::vector<std::pair<size_t, size_t>> result = get(v, r);
std::cout << result << std::endl;
return 0;
}
|