結果
| 問題 | No.498 ワープクリスタル (給料日編) |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-09-04 08:30:00 |
| 言語 | PyPy3 (7.3.23) |
| 結果 |
AC
|
| 実行時間 | 175 ms / 2,000 ms |
| + 51µs | |
| コード長 | 928 bytes |
| 記録 | |
| コンパイル時間 | 249 ms |
| コンパイル使用メモリ | 95,944 KB |
| 実行使用メモリ | 84,240 KB |
| 最終ジャッジ日時 | 2026-09-04 08:30:05 |
| 合計ジャッジ時間 | 4,786 ms |
|
ジャッジサーバーID (参考情報) |
judge3_0 / judge1_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 21 |
ソースコード
Gx,Gy,K = map(int,input().split())
E = [list(map(int,input().split())) for _ in range(K)]
MOD = 10**9+7
N = 0
for i in range(K):
N += E[i][2]
A = [1]*(N+1)
for i in range(1,N+1):
A[i] = (A[i-1]*i)%MOD
B = [1]*(N+1)
B[N] = pow(A[N],MOD-2,MOD)
for i in range(N-1,0,-1):
B[i] = (B[i+1]*(i+1))%MOD
def dfs(i,C):
global ans
if i==K-1:
for ni in range(E[K-1][2]+1):
C.append(ni)
x = 0
y = 0
n = 0
for j in range(K):
x += C[j]*E[j][0]
y += C[j]*E[j][1]
n += C[j]
if x==Gx and y==Gy:
tot = A[n]
for j in range(K):
tot = (tot*B[C[j]])%MOD
ans = (ans+tot)%MOD
C.pop()
else:
for ni in range(E[i][2]+1):
C.append(ni)
dfs(i+1,C)
C.pop()
ans = 0
dfs(0,[])
print(ans)