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/11a.c | 39 ++++++++++++++++ 2023/11/11b.c | 39 ++++++++++++++++ 2023/11/in.txt | 140 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 218 insertions(+) create mode 100644 2023/11/11a.c create mode 100644 2023/11/11b.c create mode 100644 2023/11/in.txt (limited to '2023/11') diff --git a/2023/11/11a.c b/2023/11/11a.c new file mode 100644 index 0000000..3b7f8fb --- /dev/null +++ b/2023/11/11a.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] += g[i][0] - dr[g[i][0]]; + g[i][1] += 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; +} 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; +} diff --git a/2023/11/in.txt b/2023/11/in.txt new file mode 100644 index 0000000..9406fc1 --- /dev/null +++ b/2023/11/in.txt @@ -0,0 +1,140 @@ +...#...........#..............#..................................................#...................#...................#.................. +................................................................................................#..............#...........................# +..................................#...................#.......................................................................#............. +.......................#....................................................................#............................................... +........#........................................................#.......#.................................................................. +..............................................#............#......................................................#......................... +...............#.....................#...............................#...........................#..........................#............... +....#...........................#................................................#.......................#..........................#....... +............................................................................................................................................ +......................................................................................#......#.............................................. +............#.......#.......................#.....#...........#............................................................................. +.........................#.................................................................................................................. +................................................................................................................#........................... +..............................#.......#............................................................#.................#.................#.... +............................................................................................#............................................... +.............................................................#.......#............#.......................#..............#.................# +.......#.................................................................................................................................... +...............................................................................................................................#............ +...............#............#......#...........................................#.......#.................................................... +.........................................#................#.......#............................#.....#...................................... +...................................................#...................................................................#.................... +..............................................#.................................................................#..................#........ +...................#.......................................................................#................................................ +.#......................................................................#................................................................... +.......................#.....#............#................#......................#.............................................#........... +...............#....................#.......................................#................................#...........................#.. +............................................................................................................................................ +....................#................................................#...........................#.................#........................ +...........#....................................#...................................#.......#.........#..................................... +..#...................................................#..................#.................................................................# +..................................#...............................#........................................................#................ +..........................................................................................................#................................. +......................................................................#.................#.......#.....................#..................... +.......................................#..........#......................................................................................... +......#........................#..................................................#......................................................... +....................#.................................#................................................#.................................#.. +...........#...................................................................................................#............#............... +...................................#.............................#.............#.................#.................................#........ +.............................#..........................................................#.................#..........#...................... +........................#................#..................#..................................................................#............ +...................#.....................................................#.......................................#.......................... +...................................................#.................................#...................................#.................. +..........#.............................................................................................#................................... +......................................#.........................................#................#.....................................#.... +.....................................................................#..................#...................#............................... +........................#..........................................................................................#........#............... +.#...............................................#..........................................#.........#....................................# +.............................#.............#..........#..................................................................................... +..............#...................#..............................................#........................#................................. +....................#.................................................#..................................................................... +.................................................................................................#................................#......... +....................................................#............................................................#.......................... +................#..........................................#.......#.....................#...............................#...............#.. +.....#................#..................................................................................................................... +#...............................................#............................................#.............#....................#........... +..........#.................#.............#............#.................................................................................... +.....................................................................................#...................................................... +..................#.................#....................................#......................#....................#...................... +.............................................................#................................................#............................. +................................#.............#...................................#.......#................................................. +.....................................................................#.........................................................#............ +...........#.........................................................................................#...................................... +.....................#..............................#.........................#.....................................................#....... +..............................#.....#.......#.............................................................#................................. +.....#................................................................................#...........#.............#...........#..............# +................#...............................................#................................................................#.......... +#...........................................................................................#........................#...................... +..........................#.....#........................................................................................................... +.........................................................#................#.............................................................#... +......#............................................................................#........................................................ +.........................................#.........................................................#..........#............................. +.....................#....................................................................#...............................#................. +..................................................................................................................................#......... +............#......................#.............................#.......#.................................................................. +...........................................................#...................#.............#........#....................................# +#.......................................#........#..............................................................#........................... +.................#..................................................................#....................................................... +......................................................................................................................#.................#... +............................................................................................................................................ +................................................................#.............................................#............................. +......#.........................#........#............................#.........................................................#........... +............................................................................................................................................ +.....................................................#.............................................#........................................ +.............#..........#.................................#........#........................................................................ +...................#.........................................................#.................#............#........................#...... +.............................................#.........................................#.................................................... +............................................................................................................................................ +.#.........#..........................................#....................................#................................................ +.................#...................#...................................#...............................#.......................#.......... +.......#..............#........#...................................................................................#........................ +................................................................#....................#...........#....................................#..... +.........................................#.............................................................................#.................... +...#.....................#......................#............................#.............................................................. +...................................#..................................#......................#..............................#............... +............#......................................................................................#........................................ +...............................#...........#................#....................#........................................................#. +..........................................................................................................#................................. +...........................#......................................#....................................................#............#....... +...#.....#...............................................#................#...................#..................#.......................... +.............................................#................................................................................#............. +...............#........#................................................................................................................... +....................................#................#...............#.................#..........#......................................... +..........................................#........................................................................#........................ +...........................#.....................#....................................................#..................................... +.................................#.............................................................................................#............ +.........#.....................................................#...............................#............................................ +.............................................#............................#.............................................#................#.. +#..........................................................#........................#....................................................... +.............#.......#................................................#.......#...................#................#........................ +..........................#................................................................................#................................ +.......................................#.......................................................................................#............ +......................................................................................#..................................................... +.......................#.....#......................#...............................................................................#......# +........#....................................#............#.............#...................................................#............... +.................#................................................#...........#........................................#.................... +...........................................................................................#......#......................................... +.#....................................#.........#........................................................................................... +.......................................................#................................................#........#..............#........... +...........#................................................................................................................................ +..................................................................................#.............#.....................#..................... +............................................................#..............................................#........................#....... +..#................................#.......#..................................#............................................................. +.......................#.............................................................#.....#...............................................# +.........#..........................................#..........................................................#............................ +................#........................................#...........................................#................................#..... +...............................#........#.........................#.............#........................................................... +.............................................#....................................................................#.............#........... +....................................#........................#......................#...........#.......................#................... +...................#.............................#.......................................#.................................................. +.............#..........................................................#................................................................... +........#..................................................................................................#................................ +............................................................................................................................#............#.. +#........................................#......................#..................................................#................#....... +.....................#.............#.....................#............................#.........#........................................... +.....#.....................#................................................................................................................ +.........................................................................#.................................................................. +.............#...............................................#....................#..................................#........#............. +........................#...........................#....................................................#.................................. +........................................#........................#...............................#.............#..........#..........#...... +..#.......................................................#...................#.............#............................................... -- cgit v1.3