結果
| 問題 | No.3602 Queen XOR Score |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-07-12 12:13:30 |
| 言語 | PyPy3 (7.3.17) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 3,391 bytes |
| 記録 | |
| コンパイル時間 | 239 ms |
| コンパイル使用メモリ | 96,104 KB |
| 実行使用メモリ | 109,040 KB |
| 最終ジャッジ日時 | 2026-07-24 20:37:31 |
| 合計ジャッジ時間 | 18,998 ms |
|
ジャッジサーバーID (参考情報) |
judge1_0 / judge3_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 16 WA * 11 RE * 1 TLE * 1 |
ソースコード
def Gaussian_Elimination(equation, mod):
equation_num = len(equation)
variable_num = len(equation[0])-1
ans = [0 for i in range(variable_num)]
every = [-1 for i in range(variable_num)]
answer = True
for i in range(equation_num):
for j in range(variable_num+1):
equation[i][j] %= mod
s = set([i for i in range(equation_num)])
order = []
for i in range(variable_num):
index = -1
inv = 0
for j in s:
if equation[j][i] == 0:
continue
if index == -1:
index = j
inv = pow(equation[j][i],-1,mod)
for k in range(i,variable_num+1):
equation[j][k] *= inv
equation[j][k] %= mod
else:
x = equation[j][i] * equation[index][i]
x %= mod
for k in range(i,variable_num+1):
equation[j][k] -= equation[index][k]*x
equation[j][k] %= mod
if index == -1:
every[i] = 1
else:
order.append(index)
s.discard(index)
for i in s:
add = 0
for j in equation[i]:
add += j
if add != 0:
answer = False
break
if answer == False:
for i in range(variable_num):
every[i] = -1
return ans,every
for i in range(len(order)-1,-1,-1):
val = equation[order[i]][-1]
flag = 0
for j in range(variable_num-1,-1,-1):
if every[j] != -1:
val -= equation[order[i]][j]*ans[j]
val %= mod
if every[j] == 1:
flag = 1
else:
ans[j] = val
every[j] = flag
break
return ans,every
h,w = list(map(int,input().split()))
hw = h*w
a = [list(map(int,input().split())) for i in range(h)]
q = int(input())
for _ in range(q):
x = int(input())
equation = [[] for i in range(60)]
if x == 0:
print(3)
print(1,1)
print(1,2)
print(1,1)
print(1,2)
continue
for i in range(60):
for j in range(h):
for k in range(w):
if a[j][k]&(1<<i):
equation[i].append(1)
else:
equation[i].append(0)
if x&(1<<i):
equation[i].append(1)
else:
equation[i].append(0)
answer,every = Gaussian_Elimination(equation,2)
if every[0] == -1:
print(-1)
continue
order = [set() for i in range(h)]
for i in range(h):
for u in range(w):
index = i*h+u
if answer[index] == 1:
order[i].add((i,u))
ans = []
y,x = 0,0
for i in range(h):
if len(order[i]) == 0:
continue
y,x = i,x
ans.append((y+1,x+1))
flag = (y,x) in order[i]
order[i].discard((y,x))
for Y,X in order[i]:
ans.append((Y+1,X+1))
order[i] = set()
if flag:
x = ans[-1][1]-1
else:
ans.append((y+1,x+1))
print(len(ans)-1)
for y,x in ans:
print(y,x)