From 0e8e49af605d3160645e773fdec53b7cf60cc068 Mon Sep 17 00:00:00 2001 From: Tomasz Kramkowski Date: Thu, 25 Nov 2021 22:33:45 +0000 Subject: more solutions --- 20/solution.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) (limited to '20') diff --git a/20/solution.c b/20/solution.c index cf61687..73beb80 100644 --- a/20/solution.c +++ b/20/solution.c @@ -16,9 +16,8 @@ long part1(long input) long *houses = emalloc(sizeof(long) * input / 10); #pragma omp parallel for for (long i = 1; i < input / 10; i++) - for (long j = i; j < input / 10; j++) + for (long j = i; j < input / 10; j += i) houses[j] += i * 10; - puts("filled houses"); for (long i = 1; i < input / 10; i++) { if (houses[i] >= input) { res = i; @@ -31,11 +30,25 @@ long part1(long input) long part2(long input) { - return -1; + long res = -1; + long *houses = emalloc(sizeof(long) * input / 10); + #pragma omp parallel for + for (long i = 1; i < input / 10; i++) + for (long j = i, k = 0; j < input / 10 && k < 50; j += i, k++) + houses[j] += i * 11; + for (long i = 1; i < input / 10; i++) { + if (houses[i] >= input) { + res = i; + break; + } + } + free(houses); + return res; } int main(void) { long input = 33100000; printf("%ld\n", part1(input)); + printf("%ld\n", part2(input)); } -- cgit v1.2.3-54-g00ecf