aboutsummaryrefslogtreecommitdiff
path: root/src/2020/day1/aoc.cpp
diff options
context:
space:
mode:
authorkaiwu <kaiwu2004@gmail.com>2022-04-04 16:56:32 +0800
committerkaiwu <kaiwu2004@gmail.com>2022-04-04 16:56:32 +0800
commit122958c8f385b047294dc99feb2cc86703f252c6 (patch)
tree4231029d15224b5cc758f44ea68c24f8849bf46a /src/2020/day1/aoc.cpp
parent70fa4eb7336db11344343f4d117ed30bff1ae2fb (diff)
downloadadvent-of-code-122958c8f385b047294dc99feb2cc86703f252c6.tar.gz
advent-of-code-122958c8f385b047294dc99feb2cc86703f252c6.zip
2020 day1 two sum
Diffstat (limited to 'src/2020/day1/aoc.cpp')
-rw-r--r--src/2020/day1/aoc.cpp37
1 files changed, 36 insertions, 1 deletions
diff --git a/src/2020/day1/aoc.cpp b/src/2020/day1/aoc.cpp
index a57fb7c..87972e7 100644
--- a/src/2020/day1/aoc.cpp
+++ b/src/2020/day1/aoc.cpp
@@ -1,3 +1,38 @@
#include "aoc.h"
+#include <set>
+#include <vector>
-namespace aoc2020 {}
+namespace aoc2020 {
+
+int get_number(const char* p) {
+ int d{0};
+ while (*p >= '0' && *p <= '9') {
+ d = d * 10 + *p - '0';
+ p++;
+ }
+ return d;
+}
+
+int two_sum(const std::vector<int>& is, int target) {
+ std::set<int> pairs;
+ for (auto i : is) {
+ auto it = pairs.find(i);
+ if (it == pairs.end()) {
+ pairs.insert(target - i);
+ } else {
+ return i * (target - *it);
+ }
+ };
+ return 0;
+}
+
+int day1(line_view file, int target) {
+ std::vector<int> is;
+ per_line(file, [&is](line_view lv) {
+ is.emplace_back(get_number(lv.line));
+ return true;
+ });
+ return two_sum(is, target);
+}
+
+} // namespace aoc2020