結果
問題 | No.3024 全単射的 |
ユーザー |
![]() |
提出日時 | 2025-03-20 20:32:37 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 2,339 bytes |
コンパイル時間 | 209 ms |
コンパイル使用メモリ | 82,176 KB |
実行使用メモリ | 273,632 KB |
最終ジャッジ日時 | 2025-03-20 20:33:23 |
合計ジャッジ時間 | 9,366 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | WA * 10 TLE * 1 -- * 11 |
ソースコード
from fractions import Fractionimport sysmemo = {}def generate_results(nums):nums_sorted = sorted(nums, key=lambda x: x)key = tuple(nums_sorted)if key in memo:return memo[key]if len(nums) == 1:res = {nums[0]}memo[key] = resreturn resres = set()n = len(nums)for i in range(n):for j in range(n):if i == j:continuex = nums[i]y = nums[j]remaining = [nums[k] for k in range(n) if k != i and k != j]# Additionadd = x + y# Subtraction in both orderssub_xy = x - ysub_yx = y - x# Multiplicationmul = x * y# Divisiondiv_xy = div_yx = Noneif y != Fraction(0):div_xy = x / yif x != Fraction(0):div_yx = y / x# Collect all possible results from this paircurrent_results = [add, sub_xy, sub_yx, mul]if y != Fraction(0):current_results.append(div_xy)if x != Fraction(0):current_results.append(div_yx)for result in current_results:new_nums = remaining.copy()new_nums.append(result)sub_res = generate_results(new_nums)res.update(sub_res)memo[key] = resreturn resdef main():input = sys.stdin.read().split()n = int(input[0])numbers = list(map(int, input[1:n+1]))if n == 0:print("NO")returnfractions = [Fraction(num) for num in numbers]first = fractions[0]others = fractions[1:]found = Falsetotal_comb = 1 << (n - 1)for mask in range(total_comb):t_count = (n - 1) - bin(mask).count('1')if t_count < 1:continues_list = [first]t_list = []for k in range(n-1):if mask & (1 << k):s_list.append(others[k])else:t_list.append(others[k])s_res = generate_results(s_list)t_res = generate_results(t_list)if len(s_res & t_res) > 0:found = Truebreakprint("YES" if found else "NO")if __name__ == "__main__":main()