結果
| 問題 |
No.3024 全単射的
|
| コンテスト | |
| ユーザー |
gew1fw
|
| 提出日時 | 2025-06-12 16:45:14 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,251 bytes |
| コンパイル時間 | 230 ms |
| コンパイル使用メモリ | 82,584 KB |
| 実行使用メモリ | 89,340 KB |
| 最終ジャッジ日時 | 2025-06-12 16:45:31 |
| 合計ジャッジ時間 | 9,229 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | WA * 10 TLE * 1 -- * 11 |
ソースコード
import sys
from fractions import Fraction
memo = {}
def compute_possible_values(nums):
key = tuple(nums)
if key in memo:
return memo[key]
if len(nums) == 1:
res = {Fraction(nums[0])}
memo[key] = res
return res
res = set()
for i in range(1, len(nums)):
left = nums[:i]
right = nums[i:]
left_vals = compute_possible_values(left)
right_vals = compute_possible_values(right)
for l in left_vals:
for r in right_vals:
res.add(l + r)
res.add(l - r)
res.add(l * r)
if r != 0:
res.add(l / r)
res.add(r - l)
if l != 0:
res.add(r / l)
memo[key] = res
return res
def main():
input = sys.stdin.read().split()
n = int(input[0])
a = list(map(int, input[1:n+1]))
for k in range(1, n):
left = a[:k]
right = a[k:]
left_vals = compute_possible_values(left)
right_vals = compute_possible_values(right)
for val in left_vals:
if val in right_vals:
print("YES")
return
print("NO")
if __name__ == "__main__":
main()
gew1fw