ABC087 C - Candies
備忘録
問題
回答
import sys import os ii = lambda: int(sys.stdin.buffer.readline().rstrip()) il = lambda: list(map(int, sys.stdin.buffer.readline().split())) fl = lambda: list(map(float, sys.stdin.buffer.readline().split())) iln = lambda n: [int(sys.stdin.buffer.readline().rstrip()) for _ in range(n)] iss = lambda: sys.stdin.buffer.readline().decode().rstrip() sl = lambda: list(map(str, sys.stdin.buffer.readline().decode().split())) isn = lambda n: [sys.stdin.buffer.readline().decode().rstrip() for _ in range(n)] MOD = 10 ** 9 + 7 def main(): if os.getenv("LOCAL"): sys.stdin = open("input.txt", "r") N = ii() AN = il() AM = il() ans = 0 for n in range(1, N + 1): tmp = sum(AN[:n]) tmp += sum(AM[n - 1:]) ans = max(ans, tmp) print(ans) if __name__ == '__main__': main()
考え方
2行、N列の移動範囲から最大値を探索する。
Nは最大100
と、計算量も少ないので単純に起こりえる移動パターンをすべてシミュレートし、
最大値を回答とした。
上段の移動範囲は1 ~ N
、下段の移動範囲はN - 上段で移動した回数
のため、
配列のindexに気を付けてsliceすることで回答を簡単に得られる。