diff options
Diffstat (limited to 'challenge-127/deadmarshal/cpp')
| -rw-r--r-- | challenge-127/deadmarshal/cpp/ch-1.cpp | 30 | ||||
| -rw-r--r-- | challenge-127/deadmarshal/cpp/ch-2.cpp | 37 |
2 files changed, 67 insertions, 0 deletions
diff --git a/challenge-127/deadmarshal/cpp/ch-1.cpp b/challenge-127/deadmarshal/cpp/ch-1.cpp new file mode 100644 index 0000000000..b6cf02bb6a --- /dev/null +++ b/challenge-127/deadmarshal/cpp/ch-1.cpp @@ -0,0 +1,30 @@ +#include<iostream> +#include<vector> +#include<set> + +template<typename T> +bool is_disjoint(const std::set<T> &s1, + const std::set<T> &s2) +{ + for(auto it = s1.cbegin(); it != s1.cend(); ++it) + if(s2.count(*it)) return false; + return true; +} + +template<typename T> +bool disjoint_sets(const std::vector<T> &vec1, + const std::vector<T> &vec2) +{ + return is_disjoint<T>({vec1.cbegin(),vec1.cend()}, + {vec2.cbegin(),vec2.cend()}); +} + +int main() +{ + std::vector<int> vec1{1,2,5,3,4},vec2{4,6,7,8,9}; + std::vector<int> vec3{1,3,5,7,9},vec4{0,2,4,6,8}; + std::cout << std::boolalpha << disjoint_sets<int>(vec1,vec2) << '\n' + << disjoint_sets<int>(vec3,vec4) << '\n'; + return 0; +} + diff --git a/challenge-127/deadmarshal/cpp/ch-2.cpp b/challenge-127/deadmarshal/cpp/ch-2.cpp new file mode 100644 index 0000000000..23784eb6bc --- /dev/null +++ b/challenge-127/deadmarshal/cpp/ch-2.cpp @@ -0,0 +1,37 @@ +#include<iostream> +#include<vector> + +struct Interval +{ + friend std::ostream &operator<<(std::ostream &os, + const Interval &interval) + { + os << '(' << interval.x << ',' << interval.y << ')'; + return os; + } + + int x,y; +}; + +template<typename T> +void conflict_intervals(const std::vector<T> &vec) +{ + for(size_t i = 1; i < vec.size(); ++i) + { + bool b = false; + for(size_t j = 0; j < i ; ++j) + if((vec.at(i).x >= vec.at(i).x) && (vec.at(i).x <= vec.at(j).y)) b = true; + if(b) std::cout << vec.at(i) << ' '; + } + std::cout << '\n'; +} + +int main() +{ + std::vector<Interval> vec1{{1,4},{3,5},{6,8},{12,13},{3,20}}; + std::vector<Interval> vec2{{3,4},{5,7},{6,9},{10,12},{13,15}}; + conflict_intervals<Interval>(vec1); + conflict_intervals<Interval>(vec2); + return 0; +} + |
