diff options
| author | Bond_009 <bond.009@outlook.com> | 2020-12-10 16:02:24 +0100 |
|---|---|---|
| committer | Bond_009 <bond.009@outlook.com> | 2020-12-10 16:02:24 +0100 |
| commit | 62c8a6c887809641c4fd6f21cd24b0b26aae48e8 (patch) | |
| tree | 0f254e63b912219ca807cac0ab6e0e2c1029b619 /10/part1.c | |
| parent | 9112fe39b696fa91620f1637fbc71772091917a3 (diff) | |
Optimize day 10
Diffstat (limited to '10/part1.c')
| -rw-r--r-- | 10/part1.c | 19 |
1 files changed, 8 insertions, 11 deletions
@@ -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])); } |
