]> git.friedersdorff.com Git - max/aoc_2022.git/blob - 1_2.c
Do day 7
[max/aoc_2022.git] / 1_2.c
1 #include <stdio.h>
2 #include <stdlib.h>
3
4 void set_calories(int* current, int* highest) {
5     if (*current > highest[2]) {
6         highest[0] = highest[1];
7         highest[1] = highest[2];
8         highest[2] = *current;
9     } else if (*current > highest[1]) {
10         highest[0] = highest[1];
11         highest[1] = *current;
12     } else if (*current > highest[0]) {
13         highest[0] = *current;
14     }
15
16     *current = 0;
17 }
18
19
20 int main()
21 {
22     char *buffer;
23     size_t bufsize;
24     size_t characters;
25
26     int current_calories = 0;
27     int highest_calories[3] = {0, 0, 0};
28
29     while ((characters = getline(&buffer, &bufsize, stdin)) != -1) {
30         --characters;
31
32         buffer[characters] = 0;
33
34         if (characters == 0) {
35             set_calories(&current_calories, highest_calories);
36         }
37
38         current_calories += atoi(buffer);
39     }
40
41     set_calories(&current_calories, highest_calories);
42     printf("The 3 elves with the highest calories have %d calories",
43            highest_calories[0] + highest_calories[1] + highest_calories[2]);
44 }