結果

問題 No.1067 #いろいろな色 / Red and Blue and more various colors (Middle)
ユーザー Alex WiceAlex Wice
提出日時 2020-05-29 22:12:38
言語 PyPy2
(7.3.15)
結果
AC  
実行時間 855 ms / 2,000 ms
コード長 1,421 bytes
コンパイル時間 1,379 ms
コンパイル使用メモリ 76,672 KB
実行使用メモリ 227,584 KB
最終ジャッジ日時 2024-04-23 22:50:09
合計ジャッジ時間 9,353 ms
ジャッジサーバーID
(参考情報)
judge5 / judge2
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 82 ms
77,312 KB
testcase_01 AC 97 ms
78,640 KB
testcase_02 AC 85 ms
78,848 KB
testcase_03 AC 79 ms
77,696 KB
testcase_04 AC 83 ms
78,720 KB
testcase_05 AC 89 ms
78,848 KB
testcase_06 AC 89 ms
79,108 KB
testcase_07 AC 91 ms
78,720 KB
testcase_08 AC 87 ms
78,464 KB
testcase_09 AC 88 ms
78,720 KB
testcase_10 AC 82 ms
78,592 KB
testcase_11 AC 526 ms
172,408 KB
testcase_12 AC 384 ms
135,424 KB
testcase_13 AC 655 ms
209,280 KB
testcase_14 AC 407 ms
148,992 KB
testcase_15 AC 244 ms
107,680 KB
testcase_16 AC 225 ms
101,112 KB
testcase_17 AC 124 ms
83,968 KB
testcase_18 AC 448 ms
154,240 KB
testcase_19 AC 439 ms
158,336 KB
testcase_20 AC 307 ms
109,568 KB
testcase_21 AC 855 ms
227,456 KB
testcase_22 AC 710 ms
227,584 KB
testcase_23 AC 719 ms
227,580 KB
testcase_24 AC 85 ms
77,184 KB
testcase_25 AC 86 ms
77,484 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

FAST_IO = 1
if FAST_IO:
    import io, sys, atexit
    rr = iter(sys.stdin.read().splitlines()).next
    sys.stdout = _OUTPUT_BUFFER = io.BytesIO()
    @atexit.register
    def write():
        sys.__stdout__.write(_OUTPUT_BUFFER.getvalue())
else:
    rr = raw_input
rri = lambda: int(rr())
rrm = lambda: map(int, rr().split())

####
from collections import defaultdict as ddic
N,Q = rrm()
A = rrm()
A.sort()

MOD = 998244353
poly = [1]  # reverse order, MSB -> LSB
for i, c in enumerate(A): A[i] -= 1
for a in A:
    # multiply by x + a

    poly.append(0)
    for i in xrange(len(poly) - 2, -1, -1):
        poly[i+1] += a * poly[i]
        poly[i+1] %= MOD
    poly[0] %= MOD

polys = [poly[:]]
for a in A:
    # Divide by x + a
    quot = []
    for i in xrange(len(poly) - 1):
        coeff = poly[i]
        quot.append(coeff)
        poly[i+1] -= a * coeff % MOD
        poly[i+1] %= MOD
    poly = quot
    # multiply by a + 1
    #poly.append(0)
    for i in xrange(len(poly)):
        poly[i] *= a+1
        poly[i] %= MOD
    polys.append(poly[:])

#print("!", polys)
#print(len(polys))
for _ in xrange(Q):
    l, r, p = rrm()
    i = 0  # index of polys[]
    bns = 0
    #print("!", [row[~p] for row in polys])
    for c in xrange(l, r+1):
        while i+1 < len(polys) and c > A[i]+1:
            i += 1
        try:
            bns ^= polys[i][~p]
        except:
            pass
    print bns
    
    
0