Skip to content
This repository was archived by the owner on Feb 14, 2020. It is now read-only.

Commit 5f30624

Browse files
committed
Solve day 8 part 2
1 parent 4d8a7d4 commit 5f30624

File tree

1 file changed

+21
-5
lines changed

1 file changed

+21
-5
lines changed

2018/day08.c

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,24 +5,40 @@ typedef unsigned uint;
55

66
static uint sum;
77

8-
static void meta(void) {
8+
static uint meta(void) {
99
uint meta;
1010
scanf("%u", &meta);
1111
sum += meta;
12+
return meta;
1213
}
1314

14-
static void node(void) {
15+
static uint node(void) {
1516
uint nchild, nmeta;
1617
scanf("%u %u", &nchild, &nmeta);
18+
uint children[nchild];
19+
uint metas[nmeta];
1720
for (uint i = 0; i < nchild; ++i) {
18-
node();
21+
children[i] = node();
1922
}
2023
for (uint i = 0; i < nmeta; ++i) {
21-
meta();
24+
metas[i] = meta();
2225
}
26+
uint val = 0;
27+
if (nchild) {
28+
for (uint i = 0; i < nmeta; ++i) {
29+
if (!metas[i] || metas[i] > nchild) continue;
30+
val += children[metas[i] - 1];
31+
}
32+
} else {
33+
for (uint i = 0; i < nmeta; ++i) {
34+
val += metas[i];
35+
}
36+
}
37+
return val;
2338
}
2439

2540
int main() {
26-
node();
41+
uint val = node();
2742
printf("%u\n", sum);
43+
printf("%u\n", val);
2844
}

0 commit comments

Comments
 (0)