aocc22

Advent of Code 2022
git clone git://www.tkruger.se/aocc22.git
Log | Files | Refs | README

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 }