結果
| 問題 |
No.1421 国勢調査 (Hard)
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2021-03-05 22:54:41 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 1,749 bytes |
| コンパイル時間 | 266 ms |
| コンパイル使用メモリ | 82,264 KB |
| 実行使用メモリ | 81,536 KB |
| 最終ジャッジ日時 | 2024-10-07 04:11:32 |
| 合計ジャッジ時間 | 7,628 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 22 RE * 8 |
ソースコード
import sys,random,bisect
from collections import deque,defaultdict
from heapq import heapify,heappop,heappush
from itertools import permutations
from math import log,gcd
input = lambda :sys.stdin.readline().rstrip()
mi = lambda :map(int,input().split())
li = lambda :list(mi())
N,M = mi()
vec = []
for i in range(M):
A = int(input())
B = li()
y = int(input())
c = 0
for b in B:
c += 1<<(b-1)
vec.append((c,y))
def solve(bit):
bit_vec = []
for i in range(M):
c,y = vec[i]
d = 2*c + (y>>bit & 1)
bit_vec.append((c,d))
base_c = []
base_d = []
for c,d in bit_vec:
f_c,f_d = False,False
for b in base_c:
c = min(c,c^b)
if c:
f_c = True
base_c.append(c)
for b in base_d:
d = min(d,d^b)
if d:
f_d = True
base_d.append(d)
if f_d:
if not f_c:
return -1
base_d.sort()
#print(base_d)
pos = 0
res = [0 for i in range(N)]
for d in base_d:
n = d.bit_length()
tmp = d & 1
for i in range(pos):
tmp += d>>(i+1) & res[i]
tmp %= 2
#print(pos,n,tmp,res)
for i in range(pos,n-1):
if tmp:
res[i] = 1
tmp = 0
else:
res[i] = 0
pos = n-1
return res
ans = [0 for i in range(N)]
for bit in range(30):
tmp = solve(bit)
if tmp == - 1:
exit(print(-1))
else:
for i in range(N):
ans[i] += tmp[i]<<bit
print(*ans,sep="\n")
for c,y in vec:
tmp = 0
for i in range(N):
if c>>i & 1:
tmp ^= ans[i]
assert y==tmp