Edit

【pythonでABC167を解説】B - Easy Linear Programming

問題概要

問題ページ

B - Easy Linear Programming
B - Easy Linear Programming

問題ページへ移動する

問題文

\(1\) が書かれたカードが \(A\) 枚、\(0\) が書かれたカードが \(B\) 枚、
\(-1\) が書かれたカードが \(C\) 枚あります。

これらのカードから、ちょうど \(K\) 枚を選んで取るとき、取ったカードに書かれた数の和として、
ありうる値の最大値はいくつですか。

制約

  • 入力は全て整数である。
  • \(0 \leq A, B, C\)
  • \(1 \leq K \leq A + B + C \leq 2 \times 10^9\)

問題の考察

ACコード

import sys


def solve():
    input = sys.stdin.readline
    mod = 10 ** 9 + 7
    a, b, c, k = list(map(int, input().rstrip('\n').split()))
    t = min(k, a)
    k = max(0, k - a)
    k = max(0, k - b)
    print(t - max(0, min(k, c)))


if __name__ == '__main__':
    solve()

-Edit