62 lines
1.2 KiB
C
62 lines
1.2 KiB
C
|
#include <stdio.h>
|
||
|
#include <stdlib.h>
|
||
|
#include <string.h>
|
||
|
|
||
|
#include "../../lib/aoc.h"
|
||
|
|
||
|
int main() {
|
||
|
char *input = aoc_read_input();
|
||
|
char *seek = input;
|
||
|
|
||
|
int current_cals = 0;
|
||
|
int current_elf = 0;
|
||
|
int max_elf = 0;
|
||
|
int second_max_elf = 0;
|
||
|
int third_max_elf = 0;
|
||
|
|
||
|
while (seek != NULL) {
|
||
|
char *double_line_break = strstr(seek, "\n\n");
|
||
|
if (double_line_break == NULL) {
|
||
|
seek = NULL;
|
||
|
} else {
|
||
|
*double_line_break = '\0';
|
||
|
char *line = strtok(seek, "\n");
|
||
|
while (line != NULL) {
|
||
|
current_cals = atoi(line);
|
||
|
current_elf += current_cals;
|
||
|
line = strtok(NULL, "\n");
|
||
|
}
|
||
|
|
||
|
if (current_elf > max_elf) {
|
||
|
int z = current_elf;
|
||
|
current_elf = max_elf;
|
||
|
max_elf = z;
|
||
|
}
|
||
|
|
||
|
if (current_elf > second_max_elf) {
|
||
|
int z = current_elf;
|
||
|
current_elf = second_max_elf;
|
||
|
second_max_elf = z;
|
||
|
}
|
||
|
|
||
|
if (current_elf > third_max_elf) {
|
||
|
int z = current_elf;
|
||
|
current_elf = third_max_elf;
|
||
|
third_max_elf = z;
|
||
|
}
|
||
|
|
||
|
current_elf = 0;
|
||
|
|
||
|
seek = double_line_break + 1;
|
||
|
*seek = '\0';
|
||
|
seek = seek + 1;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
printf("Part 1: %d\n", max_elf);
|
||
|
printf("Part 2: %d\n", max_elf + second_max_elf + third_max_elf);
|
||
|
|
||
|
free(input);
|
||
|
return 0;
|
||
|
}
|