aocc23

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

uppga.c (641B)


      1 #include "common.h"
      2 
      3 int main(int argc, char **argv) {
      4   char **lines;
      5   size_t nlines = readlines(&lines, "input");
      6   size_t i;
      7   uint64_t card;
      8   uint64_t sum = 0;
      9 
     10   smallset ls[nlines], rs[nlines];
     11 
     12   parse_sets(ls, rs, lines, nlines);
     13 
     14   smallset in[nlines];
     15 
     16   for (i = 0; i < nlines; i++) {
     17     smallset_init(&in[i], 128);
     18     smallset_intersection(&in[i], &ls[i], &rs[i]);
     19 
     20     card = smallset_cardinality(&in[i]);
     21     if (card != 0)
     22       sum += (1 << (card - 1));
     23   }
     24 
     25   printf("%llu\n", sum);
     26 
     27   for (i = 0; i < nlines; i++) {
     28     smallset_clear(&in[i]);
     29     smallset_clear(&ls[i]);
     30     smallset_clear(&rs[i]);
     31   }
     32 
     33   return 0;
     34 }