結果
| 問題 | No.3602 Queen XOR Score |
| コンテスト | |
| ユーザー |
👑 |
| 提出日時 | 2026-07-04 00:18:29 |
| 言語 | PyPy3 (7.3.17) |
| 結果 |
AC
|
| 実行時間 | 160 ms / 2,000 ms |
| + 767µs | |
| コード長 | 1,884 bytes |
| 記録 | |
| コンパイル時間 | 238 ms |
| コンパイル使用メモリ | 95,724 KB |
| 実行使用メモリ | 88,316 KB |
| 最終ジャッジ日時 | 2026-07-24 20:35:45 |
| 合計ジャッジ時間 | 5,607 ms |
|
ジャッジサーバーID (参考情報) |
judge3_0 / judge1_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 29 |
ソースコード
H, W = map(int, input().split())
A = [list(map(int, input().split())) for _ in range(H)]
Q = int(input())
X = [int(input()) for _ in range(Q)]
B = []
for i in range(H):
for j in range(W):
B.append(A[i][j])
length = H * W
now_x = X[:]
vecs = [[0] * length for _ in range(length + Q)]
for i in range(length):
vecs[i][i] = 1
for i in range(length):
msb = -1
for j in range(60):
if (B[i] >> j) & 1:
msb = j
if msb == -1:
continue
for j in range(i + 1, length):
if (B[j] >> msb) & 1:
B[j] ^= B[i]
for k in range(length):
vecs[j][k] ^= vecs[i][k]
for j in range(Q):
if (now_x[j] >> msb) & 1:
now_x[j] ^= B[i]
for k in range(length):
vecs[length + j][k] ^= vecs[i][k]
for qi in range(Q):
if X[qi] == 0:
print(3)
print(1, 1)
print(1, 2)
print(1, 1)
print(1, 2)
continue
if now_x[qi] != 0:
print(-1)
continue
moves = [[] for _ in range(H)]
for j in range(length):
if vecs[length + qi][j]:
h = j // W
w = j % W
moves[h].append(w)
now_y = 0
ans = []
for i in range(H):
if not moves[i]:
continue
idx = -1
len_moves = len(moves[i])
for j in range(len_moves):
if moves[i][j] == now_y:
idx = j
if idx == -1:
ans.append((i, now_y))
for w in moves[i]:
ans.append((i, w))
ans.append((i, now_y))
else:
for j in range(len_moves):
ans.append((i, moves[i][(j + idx) % len_moves]))
now_y = moves[i][(idx + len_moves - 1) % len_moves]
K = len(ans) - 1
print(K)
for r, c in ans:
print(r + 1, c + 1)