aoc

Thing1's 2025 aoc
Log | Files | Refs

3a.c (752B)


      1 #include <stdio.h>
      2 #include <stdlib.h>
      3 #include <string.h>
      4 
      5 char *
      6 findhighest(char *s) {
      7 	char z = 0;
      8 	char *highest = &z;
      9 	for (char *c = s; *c != '\n' && *c != 0; c++) {
     10 		if (*c > *highest)
     11 			highest = c;
     12 	}
     13 	return highest;
     14 }
     15 
     16 char *
     17 highestpair(char *s) {
     18 	char *h1 = findhighest(s), *h2;
     19 	static char high[2];
     20 	high[0] = *h1;
     21 
     22 	*h1 = 0;
     23 	char *s1 = findhighest(s), *s2 = findhighest(h1 + 1);
     24 	h2 = (s1 > s2) ? s1 : s2;
     25 	if (h1 > h2) {
     26 		high[1] = high[0];
     27 		high[0] = *h2;
     28 	} else high[1] = *h2;
     29 
     30 	return high;
     31 }
     32 
     33 
     34 int
     35 main() {
     36 	int total = 0;
     37 	char *pair, num[3] = {0}, line[256];
     38 
     39 	while (fgets(line, 256, stdin)) {
     40 		pair = highestpair(line);
     41 		memcpy(num, pair, 2);
     42 		printf("%s\n", num);
     43 		total += atoi(num);
     44 	}
     45 
     46 	printf("%d\n", total);
     47 }