aboutsummaryrefslogtreecommitdiff
path: root/other/my_calendar.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'other/my_calendar.cpp')
-rw-r--r--other/my_calendar.cpp31
1 files changed, 31 insertions, 0 deletions
diff --git a/other/my_calendar.cpp b/other/my_calendar.cpp
new file mode 100644
index 0000000..472884e
--- /dev/null
+++ b/other/my_calendar.cpp
@@ -0,0 +1,31 @@
+// 729. My Calendar I
+#include "leetcode.h"
+
+/*
+ * 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 (ie. some moment is
+ * common to both events.). the event can be represented as a pair of integers
+ * 'start' and 'end' that represent a booking on the half open interval '[start,
+ * end)', the range of real numbers 'x' such that 'start <= x < end'.
+ */
+
+class MyCalendar {
+ vector<pair<int, int>> books;
+
+public:
+ bool book(int start, int end) {
+ for (pair<int, int> p : books)
+ if (max(p.first, start) < min(end, p.second))
+ return false;
+ books.push_back({start, end});
+ return true;
+ }
+};
+
+int main() {
+ MyCalendar *obj = new MyCalendar();
+ printf("%d\n", obj->book(10, 20)); // expect: 1
+ printf("%d\n", obj->book(15, 25)); // expect: 0
+ printf("%d\n", obj->book(20, 30)); // expect: 1
+}