結果
問題 | No.297 カードの数式 |
ユーザー |
![]() |
提出日時 | 2025-06-12 19:52:00 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,859 bytes |
コンパイル時間 | 174 ms |
コンパイル使用メモリ | 82,720 KB |
実行使用メモリ | 55,056 KB |
最終ジャッジ日時 | 2025-06-12 19:52:28 |
合計ジャッジ時間 | 2,985 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 1 TLE * 1 -- * 21 |
ソースコード
import itertools def main(): import sys sys.setrecursionlimit(1 << 25) N = int(sys.stdin.readline()) cards = sys.stdin.readline().split() ops = [c for c in cards if c in '+-'] digits = [c for c in cards if c.isdigit()] O = len(ops) D = len(digits) M = O + 1 if M > D: print("0 0") return max_val = -float('inf') min_val = float('inf') for split_indices in itertools.combinations(range(1, D), M-1): blocks = [] prev = 0 for idx in split_indices: blocks.append(digits[prev:idx]) prev = idx blocks.append(digits[prev:]) for block_order in itertools.permutations(blocks): block_perms = [] for block in block_order: perms = set(itertools.permutations(block)) block_perms.append(perms) for block_comb in itertools.product(*block_perms): num_blocks = [] for b in block_comb: num = int(''.join(b)) num_blocks.append(num) for op_order in itertools.permutations(ops): expr = [str(num_blocks[0])] for i in range(len(op_order)): expr.append(op_order[i]) expr.append(str(num_blocks[i+1])) expr_str = ''.join(expr) try: value = eval(expr_str) except: continue if value > max_val: max_val = value if value < min_val: min_val = value print(f"{max_val} {min_val}") if __name__ == "__main__": main()