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/04/4b.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 2023/04/4b.c (limited to '2023/04/4b.c') diff --git a/2023/04/4b.c b/2023/04/4b.c new file mode 100644 index 0000000..c122f8b --- /dev/null +++ b/2023/04/4b.c @@ -0,0 +1,45 @@ +#include +#include +#include +#include + +#define N 1000 + +bool isnum(char c) { return c >= '0' && c <= '9'; } + +int main() { + char *buf, line[N]; + int c, i, j, x, sum, nw, nr, w[100], r[100], sc[N]; + + sum = c = 0; + memset(sc, 0, N * sizeof(int)); + while ((buf = fgets(line, N, stdin)) != NULL) { + nr = nw = 0; + sc[++c]++; + while (*buf != ':') buf++; + while (*buf != '|') { + buf++; + if (!isnum(*buf)) continue; + w[nw++] = atoi(buf); + while (isnum(*buf)) buf++; + } + while (*buf != '\n') { + buf++; + if (!isnum(*buf)) continue; + r[nr++] = atoi(buf); + while (isnum(*buf)) buf++; + } + for (x = 0, i = 0; i < nr; i++) { + for (j = 0; j < nw; j++) { + if (r[i] == w[j]) { + sc[(++x) + c] += sc[c]; + break; + } + } + } + sum += sc[c]; + } + + printf("%d\n", sum); + return 0; +} -- cgit v1.3