結果
問題 |
No.1709 Indistinguishable by MEX
|
ユーザー |
![]() |
提出日時 | 2021-10-15 21:58:12 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 133 ms / 2,000 ms |
コード長 | 1,208 bytes |
コンパイル時間 | 271 ms |
コンパイル使用メモリ | 82,384 KB |
実行使用メモリ | 130,068 KB |
最終ジャッジ日時 | 2024-09-17 17:28:38 |
合計ジャッジ時間 | 4,525 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 26 |
ソースコード
""" 0の位置は等しい。 1を考える。 0~1に 2,3,4... が含まれていたら、それらはすべて含まれていなければならない。 位置は間なら自由。 02341 で考えよう。 5を置く場合、位置は等しい必要がある。 """ import sys from sys import stdin import heapq def modfac(n, MOD): f = 1 factorials = [1] for m in range(1, n + 1): f *= m f %= MOD factorials.append(f) inv = pow(f, MOD - 2, MOD) invs = [1] * (n + 1) invs[n] = inv for m in range(n, 1, -1): inv *= m inv %= MOD invs[m - 1] = inv return factorials, invs def modnCr(n,r): #上で求めたfacとinvsを引数に入れるべし(上の関数で与えたnが計算できる最大のnになる) return fac[n] * inv[n-r] * inv[r] % mod mod = 998244353 fac,inv = modfac(300000,mod) N = int(stdin.readline()) P = list(map(int,stdin.readline().split())) rP = [None] * N for i in range(N): rP[P[i]] = i l,r = rP[0],rP[0] ans = 1 for i in range(1,N): if not (l <= rP[i] <= r): l = min(l,rP[i]) r = max(r,rP[i]) else: ans *= r-l-i+1 ans %= mod print (ans)