From 63c5701254ed4b6fa1fe622f82129e41d6ef8baf Mon Sep 17 00:00:00 2001 From: Mia Herkt Date: Tue, 6 Dec 2022 00:09:14 +0100 Subject: [PATCH] 05: C: Slightly faster --- 05/solution.c | 40 +++++++++++++++++++--------------------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/05/solution.c b/05/solution.c index 5b589d8..755a630 100644 --- a/05/solution.c +++ b/05/solution.c @@ -29,7 +29,25 @@ int main(void) { int i, n, N = 0, A, f, t; while (fgets(l, BUFSIZ, stdin)) { - if ((e = strrchr(l, ']'))) { + if (l[0] == 'm') { + n = strtol(l + 5, &e, 10); + f = strtol(e + 6, &e, 10) - 1; + t = atoi(e + 4) - 1; + + alloc_crates(stacksA[t], n) + tf = crate_pos(stacksA[f], -1); + tc = crate_pos(stacksA[t], -n); + for (i = 0; i < n; i++) + tc[i] = tf[-i]; + stacksA[f].len -= n; + + alloc_crates(stacksB[t], n) + tf = crate_pos(stacksB[f], -n); + tc = crate_pos(stacksB[t], -n); + for (i = 0; i < n; i++) + tc[i] = tf[i]; + stacksB[f].len -= n; + } else if ((e = strrchr(l, ']'))) { if (e > m) { m = e; A = (m - l) / 4 + 1; @@ -49,26 +67,6 @@ int main(void) { } } } - - if (l[0] == 'm') { - n = strtol(l + 5, &e, 10); - f = strtol(e + 6, &e, 10) - 1; - t = atoi(e + 4) - 1; - - alloc_crates(stacksA[t], n) - tf = crate_pos(stacksA[f], -1); - tc = crate_pos(stacksA[t], -n); - for (i = 0; i < n; i++) - tc[i] = tf[-i]; - stacksA[f].len -= n; - - alloc_crates(stacksB[t], n) - tf = crate_pos(stacksB[f], -n); - tc = crate_pos(stacksB[t], -n); - for (i = 0; i < n; i++) - tc[i] = tf[i]; - stacksB[f].len -= n; - } } printf("Silver: ");