結果
| 問題 |
No.3024 全単射的
|
| コンテスト | |
| ユーザー |
gew1fw
|
| 提出日時 | 2025-06-12 16:43:50 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 1,238 bytes |
| コンパイル時間 | 375 ms |
| コンパイル使用メモリ | 82,504 KB |
| 実行使用メモリ | 67,476 KB |
| 最終ジャッジ日時 | 2025-06-12 16:43:59 |
| 合計ジャッジ時間 | 2,614 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| 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")
gew1fw