diff --git a/2024/day-01/main.cpp b/2024/day-01/main.cpp index d21b9f6..c201014 100644 --- a/2024/day-01/main.cpp +++ b/2024/day-01/main.cpp @@ -33,12 +33,25 @@ int main() sort(list1); sort(list2); + // Part one int totalDistance = 0; - for (size_t i = 0; i < list1.size(); i++) { int distance = list1[i] - list2[i]; totalDistance += (distance >= 0) ? distance : -distance; } - cout << "Total distance between the lists: " << totalDistance << endl; + + // Part two + int similarityScore = 0; + size_t index2 = 0; + for (size_t index1 = 0; index1 < list1.size(); index1++) { + while ((index2 < list2.size()) && (list1[index1] > list2[index2])) { + index2++; + } + while ((index2 < list2.size()) && (list1[index1] == list2[index2])) { + similarityScore += list2[index2]; + index2++; + } + } + cout << "Similarity Score: " << similarityScore << endl; }