From f96834e4790481b7e956b14249f78d9953b812f4 Mon Sep 17 00:00:00 2001 From: yenru0 Date: Tue, 14 Jan 2025 21:36:44 +0900 Subject: [PATCH] complete 1823.py 13002.py --- zeta_python/completed/13002.py | 40 ++++++++++++++++++++++++++++++++++ zeta_python/completed/1823.py | 40 ++++++++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 zeta_python/completed/13002.py create mode 100644 zeta_python/completed/1823.py diff --git a/zeta_python/completed/13002.py b/zeta_python/completed/13002.py new file mode 100644 index 0000000..a5d1822 --- /dev/null +++ b/zeta_python/completed/13002.py @@ -0,0 +1,40 @@ +import sys + +input = sys.stdin.readline + + +class HappyCow: + def __init__(self, N: int, H: list[int]): + self.__N: int = N + self.__happiness: list[int] = H + self.__total: list[int] = [[0] * (self.__N + 2) for _ in range(self.__N + 2)] + + for i in range(1, self.__N + 1): + day = i + self.__total[i][self.__N] = ( + self.__total[i - 1][self.__N] + day * self.__happiness[i - 1] + ) + self.__total[0][self.__N - i] = ( + self.__total[0][self.__N - i + 1] + day * self.__happiness[self.__N - i] + ) + + for i in range(1, self.__N): + for j in range(self.__N - 1, i - 1, -1): + self.__total[i][j] = max( + [ + self.__total[i - 1][j] + + self.__happiness[i - 1] * (self.__N - j + i), + self.__total[i][j + 1] + + self.__happiness[j] * (self.__N - j + i), + ] + ) + + def solve(self) -> int: + return max([self.__total[i][i] for i in range(self.__N)]) + + +if __name__ == "__main__": + N = int(input()) + H = list(map(int, input().split())) + solver = HappyCow(N, H) + print(solver.solve()) diff --git a/zeta_python/completed/1823.py b/zeta_python/completed/1823.py new file mode 100644 index 0000000..b5b72be --- /dev/null +++ b/zeta_python/completed/1823.py @@ -0,0 +1,40 @@ +import sys + +input = sys.stdin.readline + + +class HappyCow: + def __init__(self, N: int, H: list[int]): + self.__N: int = N + self.__happiness: list[int] = H + self.__total: list[int] = [[0] * (self.__N + 2) for _ in range(self.__N + 2)] + + for i in range(1, self.__N + 1): + day = i + self.__total[i][self.__N] = ( + self.__total[i - 1][self.__N] + day * self.__happiness[i - 1] + ) + self.__total[0][self.__N - i] = ( + self.__total[0][self.__N - i + 1] + day * self.__happiness[self.__N - i] + ) + + for i in range(1, self.__N): + for j in range(self.__N - 1, i - 1, -1): + self.__total[i][j] = max( + [ + self.__total[i - 1][j] + + self.__happiness[i - 1] * (self.__N - j + i), + self.__total[i][j + 1] + + self.__happiness[j] * (self.__N - j + i), + ] + ) + + def solve(self) -> int: + return max([self.__total[i][i] for i in range(self.__N)]) + + +if __name__ == "__main__": + N = int(input()) + H = [int(input()) for _ in range(N)] + solver = HappyCow(N, H) + print(solver.solve())