#include #include #include void *emalloc(size_t s) { void *p = malloc(s); if (p != NULL) return p; fprintf(stderr, "Ran out of memory allocating a buffer of size %zu\n", s); exit(EXIT_FAILURE); } long part1(long input) { 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; j < input / 10; j++) houses[j] += i * 10; puts("filled houses"); for (long i = 1; i < input / 10; i++) { if (houses[i] >= input) { res = i; break; } } free(houses); return res; } long part2(long input) { return -1; } int main(void) { long input = 33100000; printf("%ld\n", part1(input)); }