結果
問題 | No.1141 田グリッド |
ユーザー |
![]() |
提出日時 | 2024-12-18 20:25:46 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,510 bytes |
コンパイル時間 | 382 ms |
コンパイル使用メモリ | 82,852 KB |
実行使用メモリ | 93,020 KB |
最終ジャッジ日時 | 2024-12-18 20:26:02 |
合計ジャッジ時間 | 13,525 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 18 WA * 13 |
ソースコード
MOD = 10 ** 9 + 7H, W = map(int, input().split())A = [list(map(int, input().split())) for _ in range(H)]AS = [[0] * (W + 1) for _ in range(H + 1)]for i in range(H):for j in range(W):tmp = 1 if A[i][j] == 0 else 0tmp += AS[i + 1][j]tmp += AS[i][j + 1]tmp -= AS[i][j]AS[i + 1][j + 1] = tmpAM = [[1] * (W + 1) for _ in range(H + 1)]for i in range(H):for j in range(W):if A[i][j] == 0:AM[i + 1][j + 1] = 1else:tmp = A[i][j]tmp *= AM[i + 1][j]tmp %= MODtmp *= AM[i][j + 1]tmp %= MODtmp *= pow(AM[i][j],-1,MOD)tmp %= MODAM[i + 1][j + 1] = tmpdef check(x1, y1, x2, y2):ret = AS[x1][y1]ret += AS[x2 - 1][y2 - 1]ret -= AS[x1][y2 - 1]ret -= AS[x2 - 1][y1]return ret > 0def calc(x1, y1, x2, y2):ret = AM[x1][y1]ret %= MODret *= AM[x2][y2]ret %= MODret *= pow(AM[x1][y2], -1, MOD)ret %= MODret *= pow(AM[x2][y1], -1, MOD)ret %= MODreturn retfor _ in range(int(input())):r, c = map(int, input().split())if check(r - 1, c - 1, 0, 0) or check(H, W, r, c) or check(H, c - 1, r, 0) or check(r - 1, W, 0, c):print(0)continueans = calc(r - 1, c - 1, 0, 0)ans %= MODans *= calc(H, W, r, c)ans %= MODans *= calc(H, c - 1, r, 0)ans %= MODans *= calc(r - 1, W, 0, c)ans %= MODprint(ans)