This commit is contained in:
Hugo Mårdbrink 2024-12-01 14:01:27 +01:00
parent 832cd997b3
commit a04b71939c
3 changed files with 50 additions and 9 deletions

2
.gitignore vendored
View file

@ -1,3 +1,3 @@
.DS_Store
/build
d*/.txt
*.txt

View file

@ -11,7 +11,7 @@ set(CMAKE_CXX_COMPILER clang++)
set(CMAKE_BUILD_TYPE Release)
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -Wno-c23-extensions")
endif()
set(executables d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11 d12 d13 d14 d15 d16 d17 d18 d19 d20 d21 d22 d23 d24 d25)

View file

@ -1,15 +1,56 @@
#include <iostream>
#include <fstream>
#include <sstream>
#include <vector>
#include <unordered_map>
#include <algorithm>
using std::cout, std::endl;
int main() {
std::ifstream file{"../d1/input.txt"};
std::string line;
constexpr const char content[] = {
#embed "input.txt"
};
while (std::getline(file, line)) {
void part_1() {
std::vector<int> left_vec, right_vec;
std::istringstream iss{content};
int l_id, r_id;
while (iss >> l_id >> r_id) {
left_vec.emplace_back(l_id);
right_vec.emplace_back(r_id);
}
std::sort(left_vec.begin(), left_vec.end());
std::sort(right_vec.begin(), right_vec.end());
auto diff_acc{0};
for (auto i{0}; i < left_vec.size(); i++) {
diff_acc += std::abs(left_vec[i] - right_vec[i]);
}
cout << diff_acc << endl;
}
void part_2() {
std::vector<int> left_vec;
std::unordered_map<int, int> right_map;
std::istringstream iss{content};
int l_id, r_id;
while (iss >> l_id >> r_id) {
left_vec.emplace_back(l_id);
right_map[r_id]++;
}
auto sim_acc{0};
for (auto left_num : left_vec) {
sim_acc += right_map[left_num] * left_num;
}
cout << sim_acc << endl;
}
int main() {
part_1();
part_2();
return 0;
}