結果
問題 |
No.2171 OR Assignment
|
ユーザー |
|
提出日時 | 2022-12-23 01:39:18 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 326 ms / 3,500 ms |
コード長 | 503 bytes |
コンパイル時間 | 218 ms |
コンパイル使用メモリ | 82,272 KB |
実行使用メモリ | 107,328 KB |
最終ジャッジ日時 | 2024-11-18 06:46:51 |
合計ジャッジ時間 | 6,714 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 30 |
ソースコード
P = 998244353 N = int(input()) A = list(map(int, input().split())) ppos = [] pd = [1] for i, v in enumerate(A): pos = [i] for j in reversed(ppos): nv = v | A[j] if nv != v: v = nv pos.append(j) pos.reverse() siz = len(pos) dp = [0] * (siz + 1) j = 0 for k in range(siz): while j < len(ppos) and ppos[j] <= pos[k]: j += 1 dp[k + 1] = dp[k] + pd[j] pd = [v % P for v in dp] ppos = pos print(pd[-1])