結果
問題 | No.2171 OR Assignment |
ユーザー | 👑 tute7627 |
提出日時 | 2022-11-21 23:12:21 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 2,168 ms / 3,500 ms |
コード長 | 925 bytes |
コンパイル時間 | 450 ms |
コンパイル使用メモリ | 82,220 KB |
実行使用メモリ | 117,240 KB |
最終ジャッジ日時 | 2024-11-18 06:02:38 |
合計ジャッジ時間 | 28,103 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 54 ms
66,560 KB |
testcase_01 | AC | 55 ms
66,816 KB |
testcase_02 | AC | 52 ms
67,200 KB |
testcase_03 | AC | 53 ms
67,072 KB |
testcase_04 | AC | 52 ms
66,744 KB |
testcase_05 | AC | 51 ms
67,328 KB |
testcase_06 | AC | 52 ms
66,944 KB |
testcase_07 | AC | 52 ms
66,816 KB |
testcase_08 | AC | 51 ms
66,816 KB |
testcase_09 | AC | 51 ms
67,328 KB |
testcase_10 | AC | 51 ms
66,944 KB |
testcase_11 | AC | 52 ms
66,944 KB |
testcase_12 | AC | 497 ms
117,120 KB |
testcase_13 | AC | 499 ms
116,988 KB |
testcase_14 | AC | 507 ms
117,240 KB |
testcase_15 | AC | 192 ms
104,256 KB |
testcase_16 | AC | 244 ms
104,640 KB |
testcase_17 | AC | 236 ms
116,780 KB |
testcase_18 | AC | 914 ms
116,372 KB |
testcase_19 | AC | 890 ms
104,516 KB |
testcase_20 | AC | 1,425 ms
104,536 KB |
testcase_21 | AC | 1,541 ms
105,428 KB |
testcase_22 | AC | 1,724 ms
104,660 KB |
testcase_23 | AC | 1,397 ms
110,944 KB |
testcase_24 | AC | 1,831 ms
110,664 KB |
testcase_25 | AC | 1,926 ms
108,192 KB |
testcase_26 | AC | 2,129 ms
106,856 KB |
testcase_27 | AC | 2,137 ms
107,132 KB |
testcase_28 | AC | 2,168 ms
107,124 KB |
testcase_29 | AC | 1,963 ms
109,812 KB |
testcase_30 | AC | 1,718 ms
113,356 KB |
testcase_31 | AC | 2,001 ms
110,684 KB |
ソースコード
import typing MOD = 998244353 #https://ikatakos.com/pot/programming_algorithm/data_structure/binary_indexed_tree class Bit: def __init__(self, n): self.size = n self.tree = [0] * (n + 1) def sum(self, i): s = 0 while i > 0: s += self.tree[i] if s >= MOD: s -= MOD i -= i & -i return s def add(self, i, x): i += 1 while i <= self.size: self.tree[i] += x if self.tree[i] >= MOD: self.tree[i] -= MOD i += i & -i N = int(input()) A = list(map(int,input().split())) dp = Bit(N) dp.add(0, 1) prev = [-1] * 30 for i in range(N): for j in range(30): if (A[i] >> j) & 1: prev[j] = i idx = sorted(list(set(prev)), reverse=True) for j in idx: if j != i: dp.add(j + 1, dp.sum(j + 1)) print(dp.sum(N))