結果
問題 |
No.1056 2D Lamps
|
ユーザー |
![]() |
提出日時 | 2025-06-12 14:26:43 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 2,543 bytes |
コンパイル時間 | 428 ms |
コンパイル使用メモリ | 82,568 KB |
実行使用メモリ | 125,220 KB |
最終ジャッジ日時 | 2025-06-12 14:27:03 |
合計ジャッジ時間 | 5,909 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | TLE * 1 -- * 13 |
ソースコード
def main(): import sys input = sys.stdin.read().split() idx = 0 N = int(input[idx]) idx += 1 M = int(input[idx]) idx += 1 # Read M configurations configurations = [] for _ in range(M): vec = 0 for i in range(N): line = input[idx] idx += 1 for j in range(N): if line[j] == '#': pos = i * N + j vec |= (1 << pos) configurations.append(vec) # Generate all operation vectors op_vectors = [] # Rows for k in range(1, N + 1): vec = 0 for j in range(N): pos = (k - 1) * N + j vec |= (1 << pos) op_vectors.append(vec) # Columns for k in range(1, N + 1): vec = 0 for i in range(N): pos = i * N + (k - 1) vec |= (1 << pos) op_vectors.append(vec) # Diagonals i + j = s, for s in 0..2N-2 for s in range(0, 2 * N - 1): vec = 0 for i in range(N): j = s - i if 0 <= j < N: pos = i * N + j vec |= (1 << pos) op_vectors.append(vec) # Anti-diagonals j - i = t, for t in -(N-1) to N-1 for t in range(-(N - 1), N): vec = 0 for i in range(N): j = i + t if 0 <= j < N: pos = i * N + j vec |= (1 << pos) op_vectors.append(vec) # Perform Gaussian elimination to find the basis basis = {} for vec in op_vectors: current = vec while True: if current == 0: break highest_bit = current.bit_length() - 1 if highest_bit not in basis: basis[highest_bit] = current break else: current ^= basis[highest_bit] # Sort basis keys in descending order basis_keys = sorted(basis.keys(), reverse=True) # Prepare the result result = [] for i in range(M - 1): line = [] for j in range(i + 1, M): D = configurations[i] ^ configurations[j] current = D for bit in basis_keys: if (current >> bit) & 1: current ^= basis[bit] if current == 0: line.append('1') else: line.append('0') result.append(''.join(line)) # Print the result for line in result: print(line) if __name__ == "__main__": main()