結果
| 問題 |
No.1141 田グリッド
|
| コンテスト | |
| ユーザー |
brthyyjp
|
| 提出日時 | 2021-03-20 14:43:42 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 2,472 bytes |
| コンパイル時間 | 268 ms |
| コンパイル使用メモリ | 82,168 KB |
| 実行使用メモリ | 96,048 KB |
| 最終ジャッジ日時 | 2024-11-21 00:23:14 |
| 合計ジャッジ時間 | 8,293 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 23 WA * 8 |
ソースコード
import sys
import io, os
input = io.BytesIO(os.read(0,os.fstat(0).st_size)).readline
h, w = map(int, input().split())
A = [list(map(int, input().split())) for _ in range(h)]
mod = 1000000007
from collections import defaultdict
flag = False
zr = set()
zc = set()
for i in range(h):
for j in range(w):
if A[i][j] == 0:
flag = True
zr.add(i)
zc.add(j)
if not flag:
X = [[1]*(w+1) for i in range(h+1)]
for i in range(h):
for j in range(w):
X[i+1][j+1] = X[i+1][j]*X[i][j+1]*pow(X[i][j],mod-2,mod)*A[i][j]
X[i+1][j+1] %= mod
def rect(r1, c1, r2, c2):
res = X[r2][c2]*pow(X[r2][c1],mod-2, mod)*pow(X[r1][c2],mod-2, mod)*X[r1][c1]
return res%mod
#print(X)
#print(X[h][w]%mod)
q = int(input())
for i in range(q):
r, c = map(int, input().split())
r, c = r-1, c-1
ans = rect(r+1, c+1, h, w)*rect(0, c+1, r, w)*rect(r+1, 0, h, c)*rect(0, 0, r, c)
#print(rect(r+1, c+1, h, w), rect(0, c+1, r, w), rect(r+1, 0, h, c), rect(0, 0, r, c))
print(ans%mod)
else:
if len(zr) >= 2 and len(zc) >= 2:
q = int(input())
for i in range(q):
r, c = map(int, input().split())
r, c = r-1, c-1
print(0)
elif len(zr) == 1:
total = 1
d = defaultdict(lambda: 1)
for i in range(h):
for j in range(w):
if i in zr:
continue
d[j] *= A[i][j]
d[j] %= mod
total *= A[i][j]
total %= mod
q = int(input())
for i in range(q):
r, c = map(int, input().split())
r, c = r-1, c-1
if r in zr:
ans = total*pow(d[c], mod-2, mod)
print(ans%mod)
else:
print(0)
elif len(zc) == 1:
total = 1
d = defaultdict(lambda: 1)
for i in range(h):
for j in range(w):
if j in zc:
continue
d[i] *= A[i][j]
d[i] %= mod
total *= A[i][j]
total %= mod
q = int(input())
for i in range(q):
r, c = map(int, input().split())
r, c = r-1, c-1
if c in zc:
ans = total*pow(d[r], mod-2, mod)
print(ans%mod)
else:
print(0)
brthyyjp