summaryrefslogtreecommitdiff
path: root/10/part1.c
diff options
context:
space:
mode:
authorBond_009 <bond.009@outlook.com>2020-12-10 16:02:24 +0100
committerBond_009 <bond.009@outlook.com>2020-12-10 16:02:24 +0100
commit62c8a6c887809641c4fd6f21cd24b0b26aae48e8 (patch)
tree0f254e63b912219ca807cac0ab6e0e2c1029b619 /10/part1.c
parent9112fe39b696fa91620f1637fbc71772091917a3 (diff)
Optimize day 10
Diffstat (limited to '10/part1.c')
-rw-r--r--10/part1.c19
1 files changed, 8 insertions, 11 deletions
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]));
}