#include #include #include static int part_one(FILE *fp) { int res = 0; char *line = NULL; size_t len = 0; while (getline(&line, &len, fp) != EOF) { int w, l, h; sscanf(line, "%dx%dx%d", &w, &l, &h); res += 2 * l * w + 2 * w * h + 2 * h * l; int a = w * l, b = l * h, c = w * h; res += (a <= b && a <= c) ? a : (b <= c && b <= a) ? b : (c <= a && c <= b) ? c : 0; } if (line) free(line); return res; } static int part_two(FILE *fp) { int res = 0; char *line = NULL; size_t len = 0; while (getline(&line, &len, fp) != EOF) { int w, l, h; sscanf(line, "%dx%dx%d", &w, &l, &h); int a = 2 * w + 2 * l, b = 2 * l + 2 * h, c = 2 * w + 2 * h; res += (a <= b && a <= c) ? a : (b <= c && b <= a) ? b : (c <= a && c <= b) ? c : 0; res += w * h * l; } if (line) free(line); return res; } int main(int argc, char *argv[]) { (void)argc; (void)argv; FILE *fp = fopen("input", "r"); if (!fp) exit(EXIT_FAILURE); clock_t tic = clock(); printf("%d\n", part_one(fp)); rewind(fp); printf("%d\n", part_two(fp)); clock_t toc = clock(); printf("TIME: %f seconds\n", (double)(toc - tic) / CLOCKS_PER_SEC); fclose(fp); return 0; }