summary refs log tree commit diff homepage
diff options
context:
space:
mode:
-rw-r--r--2018/day11.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/2018/day11.c b/2018/day11.c
new file mode 100644
index 0000000..770ea9f
--- /dev/null
+++ b/2018/day11.c
@@ -0,0 +1,38 @@
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+typedef unsigned uint;
+
+int main() {
+	uint serial;
+	scanf("%u", &serial);
+
+	int cells[300][300];
+	for (uint y = 0; y < 300; ++y) {
+		for (uint x = 0; x < 300; ++x) {
+			uint id = (x + 1) + 10;
+			cells[y][x] = id * (y + 1);
+			cells[y][x] += serial;
+			cells[y][x] *= id;
+			cells[y][x] /= 100;
+			cells[y][x] %= 10;
+			cells[y][x] -= 5;
+		}
+	}
+
+	int max = INT_MIN;
+	uint maxY = 0, maxX = 0;
+	for (uint y = 0; y < 297; ++y) {
+		for (uint x = 0; x < 297; ++x) {
+			int power = cells[y][x] + cells[y][x + 1] + cells[y][x + 2]
+				+ cells[y + 1][x] + cells[y + 1][x + 1] + cells[y + 1][x + 2]
+				+ cells[y + 2][x] + cells[y + 2][x + 1] + cells[y + 2][x + 2];
+			if (power < max) continue;
+			max = power;
+			maxY = y;
+			maxX = x;
+		}
+	}
+	printf("%u,%u\n", maxX + 1, maxY + 1);
+}