From 8a0bbb7531045b9176bb8b9c048271104493a9ec Mon Sep 17 00:00:00 2001 From: June McEnroe Date: Fri, 7 Dec 2018 13:20:47 -0500 Subject: Solve day 7 part 2 --- 2018/day07.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to '2018') diff --git a/2018/day07.c b/2018/day07.c index 43dd786..092ce99 100644 --- a/2018/day07.c +++ b/2018/day07.c @@ -24,4 +24,33 @@ int main() { } } printf("\n"); + + uint time = 0; + uint prog = 0; + uint done = 0; + struct { + uint step; + uint time; + } work[5] = {0}; + while (done != (1 << 26) - 1) { + for (uint i = 0; i < 26; ++i) { + if (done & (1 << i)) continue; + if (prog & (1 << i)) continue; + if ((deps[i] & done) != deps[i]) continue; + for (uint w = 0; w < 5; ++w) { + if (work[w].time) continue; + work[w].step = (1 << i); + work[w].time = 61 + i; + prog |= work[w].step; + break; + } + } + for (uint w = 0; w < 5; ++w) { + if (work[w].time && --work[w].time) continue; + done |= work[w].step; + prog &= ~work[w].step; + } + time++; + } + printf("%u\n", time); } -- cgit 1.4.1