結果
問題 |
No.3211 NAND Oracle
|
ユーザー |
|
提出日時 | 2025-08-05 13:38:50 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 108 ms / 2,000 ms |
コード長 | 1,328 bytes |
コンパイル時間 | 240 ms |
コンパイル使用メモリ | 82,296 KB |
実行使用メモリ | 77,884 KB |
最終ジャッジ日時 | 2025-08-05 13:38:57 |
合計ジャッジ時間 | 5,365 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 28 |
ソースコード
def nand(a, b): return (a & b) ^ 1 current = int(1e9) op = [] ans = [] def solve(arr, l): global current, ans if l == 0: r = max(sum(line) for line in arr) if r < current: current = r ans = op[::] # print(r, op) return for i in range(len(arr[0])): for j in range(i + 1, len(arr[0])): new = [] for k in range(4): new.append(arr[k] + [nand(arr[k][i], arr[k][j])]) op.append((i, j)) solve(new, l - 1) op.pop() init = [[0, 0], [0, 1], [1, 0], [1, 1]] test = [[1, 2], [1, 2], [3, 4], [3, 5], [3, 5], [6, 7], [6, 7], [6, 7]] """ def operate(op): hide = init[::] for i, j in op: for k in range(4): hide[k].append(nand(hide[k][i - 1], hide[k][j - 1])) print(hide) return max(sum(line) for line in hide) print(operate(test)) """ q, k = map(int, input().split()) if q <= 6: solve(init, q) if current <= k: print("Yes") for i, j in ans: print(i + 1, j + 1) else: print("No") else: if k >= 5: print("Yes") for t in range(5): i, j = test[t] print(i, j) for _ in range(q - 5): print(6, 7) else: print("No")