34 lines
781 B
C++
34 lines
781 B
C++
|
#include <algorithm>
|
||
|
#include <numeric>
|
||
|
#include <cstdlib>
|
||
|
#include <cstdint>
|
||
|
#include <iostream>
|
||
|
#include <fstream>
|
||
|
#include <iterator>
|
||
|
#include <vector>
|
||
|
#include <string>
|
||
|
|
||
|
#include <aocpp/Startup.hpp>
|
||
|
|
||
|
auto main(int argc, char** argv) -> int {
|
||
|
auto fin = aocpp::Startup(argc, argv);
|
||
|
std::vector<std::int64_t> input;
|
||
|
std::copy(std::istream_iterator<std::int64_t>{fin},
|
||
|
std::istream_iterator<std::int64_t>{},
|
||
|
std::back_inserter(input));
|
||
|
|
||
|
auto fuel = [](std::int64_t& x) { return x=x/3-2; };
|
||
|
|
||
|
std::int64_t part1 = 0;
|
||
|
std::int64_t part2 = 0;
|
||
|
|
||
|
for (auto x : input) {
|
||
|
part1 += fuel(x);
|
||
|
for (; x > 0; fuel(x)) {
|
||
|
part2 += x;
|
||
|
}
|
||
|
}
|
||
|
std::cout << "Part 1: " << part1 << std::endl;
|
||
|
std::cout << "Part 2: " << part2 << std::endl;
|
||
|
}
|