From 325117d6949f7bf2900d5f4d6a118f3e3b6b2501 Mon Sep 17 00:00:00 2001 From: Federico Igne Date: Wed, 6 Dec 2023 14:28:33 +0100 Subject: aoc(2306): Wait For It --- 2023/06/src/part1.cpp | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 2023/06/src/part1.cpp (limited to '2023/06/src/part1.cpp') diff --git a/2023/06/src/part1.cpp b/2023/06/src/part1.cpp new file mode 100644 index 0000000..2d50385 --- /dev/null +++ b/2023/06/src/part1.cpp @@ -0,0 +1,54 @@ +#include +#include +#include +#include +#include +#include + +int main(void) +{ + int answer{ 1 }; + std::vector time; + std::vector distance; + + std::ifstream input{ "resources/input.txt" }; + if (input.is_open()) + { + int n; + std::string line; + + /* Time */ + { + std::getline(input,line); + line.erase(0, std::strlen("Time:")); + std::istringstream sline{ line }; + while(sline >> n) + { + time.push_back(n); + } + } + + /* Distance */ + { + std::getline(input,line); + line.erase(0, std::strlen("Distance:")); + std::istringstream sline{ line }; + while(sline >> n) + { + distance.push_back(n); + } + } + } + input.close(); + + for (int i = 0; i < time.size(); ++i) + { + double delta = std::sqrt(time[i] * time[i] - 4 * distance[i]); + int from{ static_cast(1 + (time[i] - delta) / 2)}; + int to{ static_cast(std::ceil((time[i] + delta) / 2)) }; + answer *= to - from; + } + + std::cout << answer << std::endl; + return 0; +} -- cgit v1.2.3