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/05/5a.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 2023/05/5a.c (limited to '2023/05/5a.c') diff --git a/2023/05/5a.c b/2023/05/5a.c new file mode 100644 index 0000000..15d2805 --- /dev/null +++ b/2023/05/5a.c @@ -0,0 +1,45 @@ +#include +#include +#include +#include +#include + +#define N 100 + +bool isnum(char c) { return c >= '0' && c <= '9'; } + +int main() { + char *buf, line[N]; + int64_t i, m, ns, seed[N], next[N], r[3]; + + for (ns = 0, buf = fgets(line, N, stdin); *buf; buf++) { + if (!isnum(*buf)) continue; + next[ns++] = atoll(buf); + while (isnum(*buf)) buf++; + } + + + while ((buf = fgets(line, N, stdin)) != NULL) { + if (!isnum(*buf)) { + memcpy(seed, next, ns * sizeof(int64_t)); + fgets(line, N, stdin); /* Discard description */ + continue; + } + + for (i = 0; *buf; buf++) { + r[i++] = atoll(buf); + while (isnum(*buf)) buf++; + } + + for (i = 0; i < ns; i++) + if (seed[i] >= r[1] && seed[i] < r[1] + r[2]) + next[i] = seed[i] + (r[0] - r[1]); + } + + m = next[0]; + for (i = 1; i < ns; i++) + m = m > next[i] ? next[i] : m; + + printf("%" PRId64 "\n", m); + return 0; +} -- cgit v1.3