提出 #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
結果
AC × 1
AC × 16
セット名 テストケース
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