From 1808f31287f4f0c261ac418bdf2672fd5a84b9b8 Mon Sep 17 00:00:00 2001 From: Shanti Chellaram Date: Sat, 23 Oct 2021 15:01:32 -0400 Subject: [PATCH] Solve problem 5 --- c++/problem5.cpp | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 c++/problem5.cpp diff --git a/c++/problem5.cpp b/c++/problem5.cpp new file mode 100644 index 0000000..c497c07 --- /dev/null +++ b/c++/problem5.cpp @@ -0,0 +1,32 @@ +#include +#include "solutions.hpp" + +using namespace std; + +template <> +pair solve<5>(istream& input) { + uint64_t max_seatid = 0; + size_t part2 = 0; + bitset<1024> taken_seats; + for (string line; getline(input, line); ) { + uint64_t seatid = 0; + for (auto c : line) { + seatid <<= 1; + switch (c) { + case 'B': + case 'R': + seatid++; + } + } + max_seatid = max(seatid, max_seatid); + taken_seats.set(seatid); + } + for (size_t i = 1; i < taken_seats.size(); ++i) { + if (taken_seats[i-1] && taken_seats[i+1] && !taken_seats[i]) { + part2 = i; + break; + } + } + + return pair(to_string(max_seatid), to_string(part2)); +}