結果
問題 | No.1596 Distance Sum in 2D Plane |
ユーザー | ophhdn |
提出日時 | 2021-07-09 21:43:13 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 368 ms / 2,000 ms |
コード長 | 1,556 bytes |
コンパイル時間 | 270 ms |
コンパイル使用メモリ | 87,340 KB |
実行使用メモリ | 89,768 KB |
最終ジャッジ日時 | 2023-09-14 08:16:31 |
合計ジャッジ時間 | 7,383 ms |
ジャッジサーバーID (参考情報) |
judge13 / judge11 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 179 ms
88,344 KB |
testcase_01 | AC | 179 ms
88,424 KB |
testcase_02 | AC | 367 ms
89,552 KB |
testcase_03 | AC | 368 ms
89,696 KB |
testcase_04 | AC | 368 ms
89,372 KB |
testcase_05 | AC | 363 ms
89,500 KB |
testcase_06 | AC | 360 ms
89,616 KB |
testcase_07 | AC | 360 ms
89,312 KB |
testcase_08 | AC | 367 ms
89,528 KB |
testcase_09 | AC | 360 ms
89,768 KB |
testcase_10 | AC | 357 ms
89,660 KB |
testcase_11 | AC | 315 ms
89,700 KB |
testcase_12 | AC | 313 ms
89,564 KB |
testcase_13 | AC | 308 ms
89,612 KB |
testcase_14 | AC | 167 ms
81,332 KB |
testcase_15 | AC | 171 ms
81,480 KB |
testcase_16 | AC | 165 ms
81,452 KB |
testcase_17 | AC | 165 ms
81,364 KB |
testcase_18 | AC | 166 ms
81,460 KB |
testcase_19 | AC | 168 ms
81,528 KB |
ソースコード
from collections import defaultdict, deque, Counter from heapq import heappush, heappop, heapify import math import bisect import random from itertools import permutations, accumulate, combinations, product import sys import string from bisect import bisect_left, bisect_right from math import factorial, ceil, floor,atan2,sin,cos from operator import mul from functools import reduce from pprint import pprint sys.setrecursionlimit(2147483647) INF = 10 ** 13 def LI(): return list(map(int, sys.stdin.readline().split())) def I(): return int(sys.stdin.readline()) def LS(): return sys.stdin.buffer.readline().rstrip().decode('utf-8').split() def S(): return sys.stdin.buffer.readline().rstrip().decode('utf-8') def IR(n): return [I() for i in range(n)] def LIR(n): return [LI() for i in range(n)] def SR(n): return [S() for i in range(n)] def LSR(n): return [LS() for i in range(n)] def SRL(n): return [list(S()) for i in range(n)] def MSRL(n): return [[int(j) for j in list(S())] for i in range(n)] mod = 10**9+7 k,m=LI() n=2*k fac = [1] * (n + 1) inv = [1] * (n + 1) for j in range(1, n + 1): fac[j] = fac[j-1] * j % mod inv[n] = pow(fac[n], mod-2, mod) for j in range(n-1, -1, -1): inv[j] = inv[j+1] * (j+1) % mod def comb(n, r): if r > n or n < 0 or r < 0: return 0 return fac[n] * inv[n - r] * inv[r] % mod ans=comb(k*2,k)*(2*k)%mod for i in range(m): t,x,y=LI() if t==1: ans-=comb(x+y,y)*comb(k-x-1+k-y,k-y) else: ans -= comb(x + y, y) * comb(k- y - 1 +k- x,k- x) print(ans%mod)