Browse Source

Solve problem 5

trunk
Shanti Chellaram 4 years ago
parent
commit
1808f31287
  1. 32
      c++/problem5.cpp

32
c++/problem5.cpp

@ -0,0 +1,32 @@
#include <bitset>
#include "solutions.hpp"
using namespace std;
template <>
pair<string, string> 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));
}
Loading…
Cancel
Save