結果
問題 |
No.3024 全単射的
|
ユーザー |
![]() |
提出日時 | 2025-06-12 21:31:47 |
言語 | PyPy3 (7.3.15) |
結果 |
RE
|
実行時間 | - |
コード長 | 1,238 bytes |
コンパイル時間 | 545 ms |
コンパイル使用メモリ | 82,284 KB |
実行使用メモリ | 67,328 KB |
最終ジャッジ日時 | 2025-06-12 21:32:47 |
合計ジャッジ時間 | 3,190 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | RE * 22 |
ソースコード
from functools import lru_cache def compute_possible_values(nums): @lru_cache(maxsize=None) def helper(nums_tuple): if len(nums_tuple) == 1: return {nums_tuple[0]} results = set() for i in range(len(nums_tuple) - 1): a = nums_tuple[i] b = nums_tuple[i+1] for op in ['+', '-', '*', '/']: if op == '+': res = a + b elif op == '-': res = a - b elif op == '*': res = a * b elif op == '/': if b == 0: continue res = a / b new_tuple = nums_tuple[:i] + (res,) + nums_tuple[i+2:] sub_results = helper(new_tuple) results.update(sub_results) return results return helper(tuple(nums)) n = int(input()) nums = list(map(int, input().split())) found = False for k in range(1, n): left = nums[:k] right = nums[k:] left_res = compute_possible_values(left) right_res = compute_possible_values(right) if left_res.intersection(right_res): found = True break print("YES" if found else "NO")