結果
問題 | No.1709 Indistinguishable by MEX |
ユーザー | puzneko |
提出日時 | 2021-11-05 01:30:34 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 298 ms / 2,000 ms |
コード長 | 1,038 bytes |
コンパイル時間 | 179 ms |
コンパイル使用メモリ | 81,964 KB |
実行使用メモリ | 116,068 KB |
最終ジャッジ日時 | 2024-10-15 08:07:16 |
合計ジャッジ時間 | 5,556 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 39 ms
52,608 KB |
testcase_01 | AC | 39 ms
52,004 KB |
testcase_02 | AC | 39 ms
52,352 KB |
testcase_03 | AC | 40 ms
52,480 KB |
testcase_04 | AC | 40 ms
51,952 KB |
testcase_05 | AC | 39 ms
52,480 KB |
testcase_06 | AC | 42 ms
52,320 KB |
testcase_07 | AC | 39 ms
52,224 KB |
testcase_08 | AC | 91 ms
102,272 KB |
testcase_09 | AC | 83 ms
95,744 KB |
testcase_10 | AC | 81 ms
93,184 KB |
testcase_11 | AC | 74 ms
88,320 KB |
testcase_12 | AC | 73 ms
85,976 KB |
testcase_13 | AC | 102 ms
106,368 KB |
testcase_14 | AC | 101 ms
103,132 KB |
testcase_15 | AC | 105 ms
106,112 KB |
testcase_16 | AC | 117 ms
115,592 KB |
testcase_17 | AC | 111 ms
111,104 KB |
testcase_18 | AC | 103 ms
112,128 KB |
testcase_19 | AC | 103 ms
112,512 KB |
testcase_20 | AC | 102 ms
112,352 KB |
testcase_21 | AC | 118 ms
115,636 KB |
testcase_22 | AC | 119 ms
115,752 KB |
testcase_23 | AC | 298 ms
116,068 KB |
testcase_24 | AC | 293 ms
115,648 KB |
testcase_25 | AC | 295 ms
116,048 KB |
testcase_26 | AC | 40 ms
52,608 KB |
testcase_27 | AC | 190 ms
107,008 KB |
testcase_28 | AC | 177 ms
103,680 KB |
ソースコード
from sys import stdin n, *a = map(int, stdin.read().split()) p = 998244353 if n <= 2: print("{}".format(1)) exit() def powmod(n,pow,mod): val = 1 while pow > 0: if pow & 1: val = (val * n) % mod pow = pow >> 1 n = (n * n) % mod return val kaijo = [1 for i in range(n)] for i in range(1,n): kaijo[i] = kaijo[i-1] * i % p ichi = [0 for i in range(n)] for i in range(n): ichi[a[i]] = i left = ichi[0] right = ichi[1] if left > right: left, right = right, left anslist = [(right - left - 1,1)] for i in range(2,n): if ichi[i] < left: anslist.append((left - ichi[i] - 1,i)) left = ichi[i] elif ichi[i] > right: anslist.append((ichi[i] - right - 1,i)) right = ichi[i] last = 0 remained = 0 ans = 1 for range, ind in anslist: ans = ans * kaijo[remained] % p * powmod(kaijo[remained-(ind-last-1)],p-2,p) % p remained += range remained -= ind-last-1 last = ind ans = ans * kaijo[remained] % p print("{}".format(ans))