[白俊]#2798


#2798


ビューを展開
PROBLEM
カジノで最も人気のあるゲームブラックジャックのルールはかなり簡単です.カードと21を超えない限度内で、カード和を最大限に拡大するゲームです.ブラックジャックはカジノごとに異なる規定を持っている.
韓国最高のブラックジャックの達人である金正仁(キム・ジョンイン)氏は、サングン、チャンヨン氏と新しいブラックジャックルールを制定し、ゲームを行う.
金正仁バージョンの黒いジャックには、カードごとに正の整数が書かれています.その後、ディーラーはすべてのN枚のカードを床に置いて、数字を表示します.そしてディーラーはデジタルMを叫んだ.
現在、プレイヤーは限られた時間内にN枚のカードの中から3枚のカードを選ばなければならない.ブラックジャック変形ゲームなので、プレイヤーが選択したカードの和はMを超えず、できるだけMに近づくようにします.
N枚のカードの数字が与えられている場合は、Mを超えずにMに最も近いカード3枚の合計を求めて出力してください.
INPUT:第1行はカードの個数N(3≦N≦100)とM(10≦M≦30000)を与える.2行目は、100000を超えない正の整数であるカードの数字を与えます.
3枚とMを超えないカードが見つかった場合のみ、入力として使用できます.
OUTPUT:1行目にMを超えない3枚のできるだけMに近いカードの合計を出力します.
EXAMPLE 1
input
5 21
5 6 7 8 9
output
21
EXAMPLE 2
input
10 500
93 181 245 214 315 36 185 138 216 295
output
497
RESULT
結果メモリ時間言語コードの長さが正しい!42508 KB140 mspython444 B
import sys
from itertools import combinations

num_cards, number_m = map(int, sys.stdin.readline().split(" "))
numbers = list(map(int, sys.stdin.readline().split(" ")))
# numbers.sort(reverse=True)
ans=0
selected = list(combinations(numbers, 3))
for sel_card in selected:
    sum_sel_card = sum(sel_card)
    if number_m - sum_sel_card < 0:
        continue
    elif number_m - sum_sel_card < number_m - ans:
        ans = sum_sel_card
print(ans)