結果
| 問題 |
No.1141 田グリッド
|
| コンテスト | |
| ユーザー |
双六
|
| 提出日時 | 2020-07-31 22:07:26 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 253 ms / 2,000 ms |
| コード長 | 1,070 bytes |
| コンパイル時間 | 246 ms |
| コンパイル使用メモリ | 82,360 KB |
| 実行使用メモリ | 88,256 KB |
| 最終ジャッジ日時 | 2024-07-06 18:19:35 |
| 合計ジャッジ時間 | 5,769 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 31 |
ソースコード
import sys; input = sys.stdin.buffer.readline
sys.setrecursionlimit(10**7)
from collections import defaultdict
con = 10 ** 9 + 7; INF = float("inf")
def getlist():
return list(map(int, input().split()))
#処理内容
def main():
H, W = getlist()
table = []
for i in range(H):
A = getlist()
table.append(A)
Hsum = [1] * H
Wsum = [1] * W
Hzero = [0] * H
Wzero = [0] * W
zerocnt = 0
ALL = 1
for i in range(H):
for j in range(W):
if table[i][j] == 0:
Hzero[i] += 1
Wzero[j] += 1
zerocnt += 1
else:
ALL = (ALL * table[i][j]) % con
Wsum[j] = (Wsum[j] * table[i][j]) % con
Hsum[i] = (Hsum[i] * table[i][j]) % con
# print(Hsum)
# print(Wsum)
# print(ALL)
# クエリ
Q = int(input())
for i in range(Q):
r, c = getlist()
r -= 1; c -= 1
z = Hzero[r] + Wzero[c]
if table[r][c] == 0:
z -= 1
if z == zerocnt:
ans = ALL * pow(Hsum[r], con - 2, con) * pow(Wsum[c], con - 2, con)
if table[r][c] != 0:
ans *= table[r][c]
ans %= con
print(ans)
else:
print(0)
if __name__ == '__main__':
main()
双六