Given a list of ranges of integers R, generate a set S such that
Code:
set<int>generateSet(vector<pair<int,int>>&input) {
sort(begin(input),end(input),[](auto const &left, auto const &right) {
return left.second<right.second;
});
vector<int>runningSet;
runningSet.emplace_back(input[0].second-1);
runningSet.emplace_back(input[0].second);
for(int i=1 ;i<input.size();i++) {
if(runningSet.back()<input[i].first) {
runningSet.emplace_back(input[i].second-1);
runningSet.emplace_back(input[i].second);
}
else {
//input[i-1].second>=input[i].first
if(runningSet.back()==input[i].first) {
runningSet.emplace_back(input[i].first+1);
}
}
}
return set<int>(begin(runningSet), end(runningSet));
}