aoc

Thing1's 2025 aoc
Log | Files | Refs

5a.c (922B)


      1 #include <stdio.h>
      2 #include <stdlib.h>
      3 #include <string.h>
      4 
      5 typedef struct range {
      6 	long long int lower, upper;
      7 } range;
      8 
      9 range ranges[1024];
     10 int rangecount = 0;
     11 
     12 long long int items[1024];
     13 int itemcount = 0;
     14 
     15 void
     16 loadranges(FILE *f) {
     17 	char line[64] = {0};
     18 	while (fgets(line, 64, f) && line[0] != '\n') {
     19 		ranges[rangecount].lower = atoll(line);
     20 		ranges[rangecount].upper = atoll(strchr(line, '-') + 1);
     21 		rangecount++;
     22 	}
     23 }
     24 
     25 void
     26 loaditems(FILE *f) {
     27 	char line[64] = {0};
     28 	while (fgets(line, 64, f)) {
     29 		items[itemcount] = atoll(line);
     30 		itemcount++;
     31 	}
     32 }
     33 
     34 int
     35 isfresh(long long int item) {
     36 	for (int i = 0; i < rangecount; i++) {
     37 		if (item <= ranges[i].upper && item >= ranges[i].lower)
     38 			goto fresh;
     39 	}
     40 	return 0;
     41 
     42 fresh:
     43 	return 1;
     44 }
     45 
     46 int
     47 main() {
     48 	int fresh = 0;
     49 
     50 	loadranges(stdin);
     51 	loaditems(stdin);
     52 
     53 	for (int i = 0; i < itemcount; i++)
     54 		fresh += isfresh(items[i]);
     55 
     56 	printf("%d\n", fresh);
     57 
     58 	return 0;
     59 }