結果
問題 |
No.3024 全単射的
|
ユーザー |
![]() |
提出日時 | 2025-06-12 21:33:05 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,855 bytes |
コンパイル時間 | 168 ms |
コンパイル使用メモリ | 82,272 KB |
実行使用メモリ | 89,064 KB |
最終ジャッジ日時 | 2025-06-12 21:34:12 |
合計ジャッジ時間 | 8,901 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | WA * 10 TLE * 1 -- * 11 |
ソースコード
import itertools from fractions import Fraction def generate_results(arr): if len(arr) == 1: return {Fraction(arr[0])} results = set() for i in range(len(arr)): for j in range(len(arr)): if i != j: a = arr[i] b = arr[j] new_arr = [] for k in range(len(arr)): if k != i and k != j: new_arr.append(arr[k]) # 加法 res_add = a + b sub_results = generate_results([res_add] + new_arr) results.update(sub_results) # 减法 res_sub = a - b sub_results = generate_results([res_sub] + new_arr) results.update(sub_results) # 乘法 res_mul = a * b sub_results = generate_results([res_mul] + new_arr) results.update(sub_results) # 除法 if b != 0: res_div = a / b sub_results = generate_results([res_div] + new_arr) results.update(sub_results) return results def main(): import sys input = sys.stdin.read().split() N = int(input[0]) A = list(map(int, input[1:N+1])) for mask in range(1, (1 << N) - 1): left = [] right = [] for i in range(N): if (mask >> i) & 1: left.append(A[i]) else: right.append(A[i]) if not left or not right: continue left_results = generate_results(left) right_results = generate_results(right) for l in left_results: if l in right_results: print("YES") return print("NO") if __name__ == "__main__": main()