add: 220705-CN

This commit is contained in:
Eat-Swap 2022-07-05 23:51:14 +08:00
parent 31ff6d6000
commit 0bd6894a70
Signed by: Eatswap
GPG Key ID: BE661106A1F3FA0B
2 changed files with 34 additions and 1 deletions

33
cpp/2207/220705-CN.cpp Normal file
View File

@ -0,0 +1,33 @@
#include <set>
#include <utility>
/**
* 729. My Calendar I
* You are implementing a program to use as your calendar. We can add a new event if adding the event will not cause a double booking.
* A double booking happens when two events have some non-empty intersection (i.e., some moment is common to both events.).
* The event can be represented as a pair of integers start and end that represents a booking on the half-open interval [start, end), the range of real numbers x such that start <= x < end.
* Implement the MyCalendar class:
* MyCalendar() Initializes the calendar object.
* boolean book(int start, int end) Returns true if the event can be added to the calendar successfully without causing a double booking. Otherwise, return false and do not add the event to the calendar.
*/
class MyCalendar {
private:
std::set<std::pair<int, int>> s;
public:
MyCalendar() = default;
bool book(int start, int end) {
if (s.empty()) {
s.insert({start, end});
return true;
}
auto it = s.lower_bound({end, -1});
if (it == s.begin() || std::prev(it)->second <= start) {
s.insert({start, end});
return true;
}
return false;
}
};

View File

@ -3,4 +3,4 @@ PROJECT(2207)
SET(CMAKE_CXX_STANDARD 23) SET(CMAKE_CXX_STANDARD 23)
ADD_EXECUTABLE(2207 220704-CN.cpp) ADD_EXECUTABLE(2207 220705-CN.cpp)