#include #include #include #include "../../lib/aoc.h" // TODO figure this out dynamically #define ARRAY_SIZE 1000 int main() { char *line; int left[ARRAY_SIZE]; int right[ARRAY_SIZE]; int index = 0; while ((line = aoc_read_line()) != NULL) { int l, r; sscanf(line, "%d %d", &l, &r); left[index] = l; right[index] = r; index++; } qsort(left, ARRAY_SIZE, sizeof(int), aoc_sort_int); qsort(right, ARRAY_SIZE, sizeof(int), aoc_sort_int); int sum = 0; for (int i = 0; i < ARRAY_SIZE; i++) { sum += abs(left[i] - right[i]); } printf("Part 1: %d\n", sum); int similarity_score = 0; int j = 0; for (int i = 0; i < ARRAY_SIZE; i++) { int right_count = 0; for (; j < ARRAY_SIZE; j++) { if (left[i] == right[j]) right_count++; else if (left[i] < right[j]) break; } similarity_score += (left[i] * right_count); } printf("Part 2: %d\n", similarity_score); aoc_free(); return 0; }