結果
| 問題 | No.1596 Distance Sum in 2D Plane |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-01-02 15:55:19 |
| 言語 | PyPy3 (7.3.17) |
| 結果 |
AC
|
| 実行時間 | 493 ms / 2,000 ms |
| コード長 | 1,079 bytes |
| 記録 | |
| コンパイル時間 | 371 ms |
| コンパイル使用メモリ | 82,776 KB |
| 実行使用メモリ | 107,312 KB |
| 最終ジャッジ日時 | 2026-01-02 15:55:28 |
| 合計ジャッジ時間 | 8,173 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 17 |
ソースコード
import sys
from typing import List, Tuple
def int1(x: str, /): return int(x) - 1
def input(): return sys.stdin.readline().rstrip('\n')
def dbg(*args, **kwargs):
print(*(repr(arg) for arg in args), *(f'{k}: {repr(v)}' for k, v in kwargs.items()), sep='; ', file=sys.stderr)
M = 10 ** 9 + 7
def fact(x, memo=[1]):
if len(memo) <= x:
for i in range(len(memo), x + 1):
memo.append(i * memo[i - 1] % M)
return memo[x]
def main():
n, m = map(int, input().split())
tot = 2 * n * fact(2 * n) * pow(fact(n), -2, M) % M
for _ in range(m):
t, x, y = map(int, input().split())
tot -= fact(x + y) * pow(fact(x) * fact(y), -1, M) * fact((2 * n - 1) - (x + y)) * \
pow(fact(n - (x + (0 if t == 2 else 1))) * fact(n - (y + (0 if t == 1 else 1))), -1, M)
tot %= M
return tot
def _start():
ret = main()
if ret is not None:
if isinstance(ret, List) or isinstance(ret, Tuple):
print(*ret)
else:
print(ret)
if __name__ == '__main__':
_start()