提出 #8515308
ソースコード 拡げる
import sys
read = sys.stdin.buffer.read
readline = sys.stdin.buffer.readline
readlines = sys.stdin.buffer.readlines
import numpy as np
MOD = 10 ** 9 + 7
N = int(readline())
m = map(int,read().split())
AB = zip(m,m)
D = 2000
U = 10 ** 4
fact = [1] * U
for n in range(1,U):
fact[n] = fact[n-1] * n % MOD
fact_inv = [1] * U
fact_inv[-1] = pow(fact[-1],MOD-2,MOD)
for n in range(U-1,0,-1):
fact_inv[n-1] = fact_inv[n] * n % MOD
C_to_A = [[] for _ in range(D+D+1)]
Y = 0
for a,b in AB:
c = a+b
C_to_A[c].append(D-a)
Y += fact[c+c] * fact_inv[a+a] * fact_inv[b+b]
Y %= MOD
f = np.zeros(D+D+1,np.int64)
for A in C_to_A[::-1]:
f[1:] += f[:-1].copy()
np.add.at(f,A,1)
f %= MOD
X = (f * f[::-1] % MOD).sum() % MOD
answer = (X - Y) * fact_inv[2] % MOD
print(answer)
提出情報
| 提出日時 | |
|---|---|
| 問題 | E - BBQ Hard |
| ユーザ | maspy |
| 言語 | Python (3.4.3) |
| 得点 | 1400 |
| コード長 | 834 Byte |
| 結果 | AC |
| 実行時間 | 761 ms |
| メモリ | 40384 KiB |
ジャッジ結果
| セット名 | Sample | All | ||||
|---|---|---|---|---|---|---|
| 得点 / 配点 | 0 / 0 | 1400 / 1400 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| Sample | sample-01.txt |
| All | sample-01.txt, 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, sample-01.txt |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| 01-01.txt | AC | 432 ms | 13036 KiB |
| 01-02.txt | AC | 432 ms | 13288 KiB |
| 01-03.txt | AC | 593 ms | 26280 KiB |
| 01-04.txt | AC | 750 ms | 39524 KiB |
| 01-05.txt | AC | 748 ms | 39520 KiB |
| 01-06.txt | AC | 703 ms | 34592 KiB |
| 01-07.txt | AC | 435 ms | 13160 KiB |
| 01-08.txt | AC | 668 ms | 25504 KiB |
| 01-09.txt | AC | 702 ms | 40384 KiB |
| 01-10.txt | AC | 724 ms | 37772 KiB |
| 01-11.txt | AC | 739 ms | 38672 KiB |
| 01-12.txt | AC | 710 ms | 35136 KiB |
| 01-13.txt | AC | 746 ms | 39532 KiB |
| 01-14.txt | AC | 761 ms | 39480 KiB |
| sample-01.txt | AC | 431 ms | 13156 KiB |