結果
| 問題 |
No.460 裏表ちわーわ
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2016-12-11 21:38:23 |
| 言語 | Python2 (2.7.18) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,503 bytes |
| コンパイル時間 | 667 ms |
| コンパイル使用メモリ | 7,076 KB |
| 実行使用メモリ | 6,824 KB |
| 最終ジャッジ日時 | 2024-11-29 04:04:53 |
| 合計ジャッジ時間 | 1,972 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 20 WA * 8 |
ソースコード
#!/usr/bin/python2
# -*- coding: utf-8 -*-
# †
from itertools import product
from itertools import chain
flatten = chain.from_iterable
R, C = map(int, raw_input().split())
n = R * C
A = [[0 for j in range(n)] for i in range(n)] # A[n][n]
for r in xrange(R):
for c in xrange(C):
i = r * C + c
for dr, dc in product([-1, 0, 1], repeat=2):
nr = r + dr
nc = c + dc
if not (0 <= nr < R and 0 <= nc < C):
continue
ni = nr * C + nc
A[ni][i] = 1
def add_rows(A, i, j):
return [(A[i][k] + A[j][k]) % 2 for k in xrange(n)]
def swap_rows(A, i, j):
A[i], A[j] = A[j], A[i]
mat = [map(int, raw_input().split()) for _ in xrange(R)]
state = list(flatten(mat))
G = state[:]
for c in xrange(n):
for r in xrange(c, n):
if A[r][c] == 1:
swap_rows(A, r, c)
swap_rows(state, r, c)
for other in xrange(n):
if other != c and A[other][c] == 1:
A[other] = add_rows(A, other, c)
state[other] ^= state[c]
for i in xrange(R*C):
if state[i]:
r, c = divmod(i, C)
for dr in [-1, 0, 1]:
for dc in [-1, 0, 1]:
nr = r + dr
nc = c + dc
if not (0 <= nr < R and 0 <= nc < C):
continue
G[nr*C+nc] = 1 - G[nr*C+nc]
if any(x!=0 for x in G):
print 'Impossible'
exit(0)
res = state.count(1)
print res