From 9876579ff7c189a8e53b4b5c37644aa524fbd385 Mon Sep 17 00:00:00 2001 From: jacopograndi Date: Thu, 6 Jan 2022 16:26:07 +0100 Subject: day07 --- day07/day07 | Bin 0 -> 76312 bytes day07/day07.cpp | 40 ++++++++++++++++++++++++++++++++++++++++ day07/day07_input.txt | 1 + day07/day07_input_ez.txt | 1 + day07/makefile | 2 ++ 5 files changed, 44 insertions(+) create mode 100755 day07/day07 create mode 100644 day07/day07.cpp create mode 100644 day07/day07_input.txt create mode 100644 day07/day07_input_ez.txt create mode 100644 day07/makefile (limited to 'day07') diff --git a/day07/day07 b/day07/day07 new file mode 100755 index 0000000..4cbc735 Binary files /dev/null and b/day07/day07 differ diff --git a/day07/day07.cpp b/day07/day07.cpp new file mode 100644 index 0000000..f9bbd1a --- /dev/null +++ b/day07/day07.cpp @@ -0,0 +1,40 @@ +#include +#include +#include +#include + +#include "../utils.h" + +long sumdist (std::vector pos, int pole, int inc) { + long sd = 0; + for (auto p : pos) { + int n = abs(p-pole); + if (inc == 1) n = (n * (n+1)) / 2; + sd += n; + } + return sd; +} + +int main (int argc, char *argv[]) { + std::string raw; + std::getline(std::ifstream(argv[1]), raw, '\0'); + std::vector vec; + split(vec, raw, ","); + std::vector pos; + for (auto s : vec) pos.push_back(std::stoi(s)); + + int minp = 10000, maxp = -10000; + for (auto p : pos) { + minp = std::min(minp, p); + maxp = std::max(maxp, p); + } + int inc = argc > 2 ? atoi(argv[2]) : 0; + long fuel = 100000000000; + for (int i=minp; i