Day 1
This commit is contained in:
parent
832cd997b3
commit
a04b71939c
3 changed files with 50 additions and 9 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
|
@ -1,3 +1,3 @@
|
||||||
.DS_Store
|
.DS_Store
|
||||||
/build
|
/build
|
||||||
d*/.txt
|
*.txt
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ set(CMAKE_CXX_COMPILER clang++)
|
||||||
set(CMAKE_BUILD_TYPE Release)
|
set(CMAKE_BUILD_TYPE Release)
|
||||||
|
|
||||||
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
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()
|
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)
|
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)
|
||||||
|
|
|
||||||
51
d1/main.cxx
51
d1/main.cxx
|
|
@ -1,15 +1,56 @@
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <fstream>
|
#include <sstream>
|
||||||
|
#include <vector>
|
||||||
|
#include <unordered_map>
|
||||||
|
#include <algorithm>
|
||||||
|
|
||||||
using std::cout, std::endl;
|
using std::cout, std::endl;
|
||||||
|
|
||||||
int main() {
|
constexpr const char content[] = {
|
||||||
std::ifstream file{"../d1/input.txt"};
|
#embed "input.txt"
|
||||||
std::string line;
|
};
|
||||||
|
|
||||||
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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue