結果
| 問題 | 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")