#include #include #include #include #include #include using namespace std; namespace { vector read_file(const filesystem::path& filename) { ifstream file{ filename }; vector values; for ( long value = 0; file >> value; ) { values.emplace_back(value); } return values; } void part1(const vector& values) { auto sum = accumulate(values.begin(), values.end(), 0L); cout << "Part1: " << sum << '\n'; } void part2(const vector& values) { unordered_set seen; long sum = 0; for ( size_t idx = 0;; ++idx ) { sum += values.at(idx % values.size()); if ( seen.contains(sum) ) { cout << "Part2: " << sum << '\n'; return; } seen.emplace(sum); } } } // namespace int main() { auto values = read_file("data/day01.txt"); part1(values); part2(values); }