From 7d36403d7be4ddf652adea2b145b8c668dbbb99e Mon Sep 17 00:00:00 2001 From: June McEnroe Date: Sat, 8 Dec 2018 21:51:37 -0500 Subject: Solve day 8 part 2 --- 2018/day08.c | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) (limited to '2018') diff --git a/2018/day08.c b/2018/day08.c index a240786..7357ed8 100644 --- a/2018/day08.c +++ b/2018/day08.c @@ -5,24 +5,40 @@ typedef unsigned uint; static uint sum; -static void meta(void) { +static uint meta(void) { uint meta; scanf("%u", &meta); sum += meta; + return meta; } -static void node(void) { +static uint node(void) { uint nchild, nmeta; scanf("%u %u", &nchild, &nmeta); + uint children[nchild]; + uint metas[nmeta]; for (uint i = 0; i < nchild; ++i) { - node(); + children[i] = node(); } for (uint i = 0; i < nmeta; ++i) { - meta(); + metas[i] = meta(); } + uint val = 0; + if (nchild) { + for (uint i = 0; i < nmeta; ++i) { + if (!metas[i] || metas[i] > nchild) continue; + val += children[metas[i] - 1]; + } + } else { + for (uint i = 0; i < nmeta; ++i) { + val += metas[i]; + } + } + return val; } int main() { - node(); + uint val = node(); printf("%u\n", sum); + printf("%u\n", val); } -- cgit 1.4.1