結果
問題 |
No.2121 帰属関係と充足可能性
|
ユーザー |
![]() |
提出日時 | 2025-03-20 20:45:20 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 2,120 bytes |
コンパイル時間 | 148 ms |
コンパイル使用メモリ | 82,604 KB |
実行使用メモリ | 66,492 KB |
最終ジャッジ日時 | 2025-03-20 20:45:32 |
合計ジャッジ時間 | 4,235 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 5 TLE * 1 -- * 43 |
ソースコード
def generate_V(n): if n == 0: return [frozenset()] prev = generate_V(n - 1) current = [] from itertools import combinations prev_list = list(prev) # Generate all possible subsets of the previous V_{n-1} for bits in range(1 << len(prev_list)): subset = [] for i in range(len(prev_list)): if (bits >> i) & 1: subset.append(prev_list[i]) current.append(frozenset(subset)) # Remove duplicates by converting to a set first unique = [] seen = set() for s in current: if s not in seen: seen.add(s) unique.append(s) return unique def main(): import sys input = sys.stdin.read().split() N = int(input[0]) A = list(map(int, input[1:7])) A0, A1, A2, A3, A4, A5 = A Vn = generate_V(N) for m0 in Vn: for m1 in Vn: for m2 in Vn: # Determine which variables to check based on A0-A5 mA0 = [m0, m1, m2][A0] mA1_set = [m0, m1, m2][A1] mA2 = [m0, m1, m2][A2] mA3_val = [m0, m1, m2][A3] mA4_val = [m0, m1, m2][A4] mA5_val = [m0, m1, m2][A5] # Check condition 1: mA0 subset of mA1 cond1 = True for x in Vn: if x in mA0 and x not in mA1_set: cond1 = False break if not cond1: continue # Check condition2: mA1 in mA2 if mA1_set not in mA2: continue # Check condition3: A3's variable in mA2 if mA3_val not in mA2: continue # Check condition4: A4's variable in mA2 if mA4_val not in mA2: continue # Check condition5: A5's variable in mA0 if mA5_val not in mA0: continue print("YES") return print("NO") if __name__ == "__main__": main()