結果
問題 |
No.3024 全単射的
|
ユーザー |
![]() |
提出日時 | 2025-06-12 21:31:01 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,251 bytes |
コンパイル時間 | 157 ms |
コンパイル使用メモリ | 82,040 KB |
実行使用メモリ | 88,852 KB |
最終ジャッジ日時 | 2025-06-12 21:31:49 |
合計ジャッジ時間 | 8,934 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
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()