From 62c8a6c887809641c4fd6f21cd24b0b26aae48e8 Mon Sep 17 00:00:00 2001 From: Bond_009 Date: Thu, 10 Dec 2020 16:02:24 +0100 Subject: Optimize day 10 --- 10/part1.c | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) (limited to '10/part1.c') diff --git a/10/part1.c b/10/part1.c index 9b44cf5..f5a700e 100644 --- a/10/part1.c +++ b/10/part1.c @@ -11,18 +11,16 @@ void insert_value_sorted(int *list, size_t *size, int value) long long low = 0, high = *size; while (low < high) { int m = low + (high - low) / 2; - if (list[m] == value) { - /* Name already exists, - return pointer to the already existsing string and free the new one. - */ - return; - } - else if (list[m] < value) { + if (list[m] < value) { low = m + 1; } - else { + else if (list[m] > value) { high = m; } + else { + // Value already exists in the list + return; + } } for (long long i = *size - 1; i >= low; i--) { @@ -33,7 +31,7 @@ void insert_value_sorted(int *list, size_t *size, int value) list[low] = value; } -int bags_count(const char *filename) +int solve(const char *filename) { FILE *file = fopen(filename, "r"); @@ -44,7 +42,6 @@ int bags_count(const char *filename) size_t input_size = 1; // 0 is our start value while (fgets(buffer, 128, file)) { - puts(buffer); insert_value_sorted(input, &input_size, atoi(buffer)); } @@ -69,5 +66,5 @@ int bags_count(const char *filename) int main(int argc, char *argv[]) { - printf("%i\n", bags_count(argv[argc - 1])); + printf("%i\n", solve(argv[argc - 1])); } -- cgit v1.2.3