From e0879b1fc2608befa6eee4dd8c2a82ade94e94ce Mon Sep 17 00:00:00 2001 From: Orfeas <38209077+0xfea5@users.noreply.github.com> Date: Wed, 27 Aug 2025 04:18:43 +0300 Subject: day01/: rewrite solution to be in line with the template --- day01/solution.cpp | 53 +++++++++++++++++++++++++++++++++++------------------ 1 file changed, 35 insertions(+), 18 deletions(-) (limited to 'day01/solution.cpp') diff --git a/day01/solution.cpp b/day01/solution.cpp index b19504e..78535a3 100644 --- a/day01/solution.cpp +++ b/day01/solution.cpp @@ -4,10 +4,28 @@ #include #include #include +#include +#include +#include + +namespace ranges = std::ranges; -void part1(std::vector A, std::vector B) { - std::sort(A.begin(), A.end()); - std::sort(B.begin(), B.end()); +const auto parse_input() { + std::pair, std::vector> result; + + for (int a, b; std::cin >> a >> b;) { + result.first.push_back(a); + result.second.push_back(b); + } + + return result; +} + +void part1(auto input) { + auto &[A, B] = input; + + ranges::sort(A); + ranges::sort(B); int sum = 0; for (auto [x, y] : std::views::zip(A, B)) { @@ -17,35 +35,34 @@ void part1(std::vector A, std::vector B) { std::println("{}", sum); } -void part2(std::vector A, std::vector B) { - std::map _A, _B; +void part2(auto input) { + auto &[A, B] = input; + std::map freq_A, freq_B; for (auto a : A) { - _A[a]++; + freq_A[a]++; } for (auto b : B) { - _B[b]++; + freq_B[b]++; } int sum = 0; - for (auto a : _A) { - sum += a.first * a.second * _B[a.first]; + for (auto a : freq_A) { + sum += a.first * a.second * freq_B[a.first]; } std::println("{}", sum); } int main() { - std::vector A, B; - - int a, b; - while (std::cin >> a >> b) { - A.push_back(a); - B.push_back(b); - } + const auto input = parse_input(); - part1(A, B); - part2(A, B); +#ifndef NO_PART1 + part1(input); +#endif +#ifndef NO_PART2 + part2(input); +#endif return 0; } -- cgit v1.2.3