ABC028 C - 数を3つ選ぶマン

備忘録

問題

atcoder.jp

回答

import sys
import os

ii = lambda: int(sys.stdin.buffer.readline().rstrip())
il = lambda: list(map(int, 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()
isn = lambda n: [sys.stdin.buffer.readline().decode().rstrip() for _ in range(n)]


def main():
    if os.getenv("LOCAL"):
        sys.stdin = open("input.txt", "r")

    A, B, C, D, E = il()
    print(max(A+D+E, B+C+E))


if __name__ == '__main__':
    main()

考え方

条件がA < B < C < D < Eなので、
3つの和で最も値が大きくなるのは必ずC + D + E
2番目に大きくなるのは必ず、B + D + E となる。

3番目からは気を付ける必要があり、
3番目に大きい3つの和はA + D + EまたはB + C + Eのどちらかになる。
そのため、この2つを比較し、大きい方を出力する。