From 554ad47f09974f0131df285fda8ea50a1fdad8f5 Mon Sep 17 00:00:00 2001 From: Sebastiano Tronto Date: Mon, 11 Dec 2023 15:14:47 +0100 Subject: Initial commit, some solutions --- 2023/11/11b.c | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 2023/11/11b.c (limited to '2023/11/11b.c') diff --git a/2023/11/11b.c b/2023/11/11b.c new file mode 100644 index 0000000..edb0fd6 --- /dev/null +++ b/2023/11/11b.c @@ -0,0 +1,39 @@ +#include +#include +#include +#include + +#define N 1000 + +#define ABS(a) ((a)>0 ? (a) : -(a)) + +uint8_t dr[N], dc[N]; +int64_t i, j, k, n, p, g[N*N][2]; + +int main() { + char line[N]; + for (i = 0; fgets(line, N, stdin) != NULL; i++) { + for (j = 0; line[j] != '\n'; j++) { + if (line[j] == '#') { + g[n][0] = i; + g[n++][1] = j; + dr[i] = dc[j] = 1; + } + } + } + + for (k = 1; k < i; k++) dr[k] += dr[k-1]; + for (k = 1; k < j; k++) dc[k] += dc[k-1]; + + for (i = 0; i < n; i++) { + g[i][0] += 999999 * (g[i][0] - dr[g[i][0]]); + g[i][1] += 999999 * (g[i][1] - dc[g[i][1]]); + } + + for (i = 0; i < n; i++) + for (j = i+1; j < n; j++) + p += ABS(g[i][0] - g[j][0]) + ABS(g[i][1] - g[j][1]); + + printf("%" PRId64 "\n", p); + return 0; +} -- cgit v1.3