summaryrefslogtreecommitdiff
path: root/2023/06/src/part1.cpp
diff options
context:
space:
mode:
Diffstat (limited to '2023/06/src/part1.cpp')
-rw-r--r--2023/06/src/part1.cpp54
1 files changed, 54 insertions, 0 deletions
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 @@
1#include <iostream>
2#include <fstream>
3#include <sstream>
4#include <cstring>
5#include <vector>
6#include <cmath>
7
8int main(void)
9{
10 int answer{ 1 };
11 std::vector<int> time;
12 std::vector<int> distance;
13
14 std::ifstream input{ "resources/input.txt" };
15 if (input.is_open())
16 {
17 int n;
18 std::string line;
19
20 /* Time */
21 {
22 std::getline(input,line);
23 line.erase(0, std::strlen("Time:"));
24 std::istringstream sline{ line };
25 while(sline >> n)
26 {
27 time.push_back(n);
28 }
29 }
30
31 /* Distance */
32 {
33 std::getline(input,line);
34 line.erase(0, std::strlen("Distance:"));
35 std::istringstream sline{ line };
36 while(sline >> n)
37 {
38 distance.push_back(n);
39 }
40 }
41 }
42 input.close();
43
44 for (int i = 0; i < time.size(); ++i)
45 {
46 double delta = std::sqrt(time[i] * time[i] - 4 * distance[i]);
47 int from{ static_cast<int>(1 + (time[i] - delta) / 2)};
48 int to{ static_cast<int>(std::ceil((time[i] + delta) / 2)) };
49 answer *= to - from;
50 }
51
52 std::cout << answer << std::endl;
53 return 0;
54}