46 lines
919 B
C++
46 lines
919 B
C++
|
#include <string>
|
||
|
#include "lib.hpp"
|
||
|
|
||
|
#ifndef VERBOSE
|
||
|
#define VERBOSE 0
|
||
|
#endif
|
||
|
|
||
|
#ifndef PART
|
||
|
#define PART 1
|
||
|
#endif
|
||
|
|
||
|
struct Range{
|
||
|
uint start, end;
|
||
|
bool operator ==(const Range & rhs) const{
|
||
|
return this->start == rhs.start && this->end == rhs.end;
|
||
|
}
|
||
|
bool fully_contains(const Range & rhs) const;
|
||
|
bool overlaps(const Range & rhs) const;
|
||
|
bool is_disjoint_from(const Range & rhs) const;
|
||
|
};
|
||
|
|
||
|
struct Input{
|
||
|
Range r1, r2;
|
||
|
|
||
|
bool operator ==(const Input & rhs) const{
|
||
|
return this->r1 == rhs.r1 && this->r2 == rhs.r2;
|
||
|
}
|
||
|
};
|
||
|
|
||
|
inline std::ostream& operator<<(std::ostream &os, Range & range){
|
||
|
os << "[" << range.start << ", " << range.end << "]";
|
||
|
return os;
|
||
|
}
|
||
|
|
||
|
inline std::ostream& operator<<(std::ostream &os, Input & inp){
|
||
|
os << inp.r1 << " & " << inp.r2;
|
||
|
return os;
|
||
|
}
|
||
|
|
||
|
|
||
|
std::vector<Input> get_input(const char *);
|
||
|
|
||
|
std::string get_result(std::vector<Input>);
|
||
|
|
||
|
|