uppga.c (613B)
1 #include "common.h" 2 3 uint64_t sum_sizes_leq(tn *cp, uint64_t leq) { 4 uint64_t r = 0; 5 size_t i; 6 for (i = 0; i < cp->children_n; i++) 7 r += sum_sizes_leq(cp->children[i], leq); 8 if (cp->size <= leq) 9 r += cp->size; 10 return r; 11 } 12 13 int main(int argc, char **argv) { 14 char **lines; 15 size_t nlines = readlines(&lines, "input"); 16 17 size_t i; 18 for (i = 0; i < nlines; i++) { 19 if (lines[i][strlen(lines[i]) - 1] == '\n') 20 lines[i][strlen(lines[i]) - 1] = '\0'; 21 } 22 23 tn *root = parse_input(lines, nlines); 24 sum_sizes(root); 25 printf("%llu\n", sum_sizes_leq(root, 100000)); 26 tn_cleartree(root); 27 }