TopCoder

User's AC Ratio

78.6% (11/14)

Submission's AC Ratio

50.6% (40/79)

Tags

Description

現在,有一個長度 $N$ 的非負整數序列 $a_1, a_2, \dots, a_N$, 請幫忙計算區間的 NAND

對於 $l, r$ 區間來說, 所謂區間的 NAND 就是把裡面每個元素由左到右依序做 NAND 運算,也就是

$$ f(l, r) = NAND(NAND(\dots NAND(a_l, a_{l+1}), a_{l+2}, \dots, a_r) $$

此外,若 $l=r$ 則定義 $f(l, r) = a_l$。

其中兩個數字的 NAND 定義為,將兩個數字的二進位表示法寫下來,並往高位補 0 直到長度為 $C$ 後,按位 NAND 的結果。

Input Format

輸入第一行有三個正整數 $N, Q, C$。

輸入第二行有 $N$ 個非負整數 $a_1, a_2, \ldots, a_N$。

接下來 $Q$ 行,每行可能是下面的其中一種:

  • $1 \ l \ r$:表示請你輸出 $f(l, r)$。
  • $2 \ p \ x$:表示請你更新 $a_p$ 為 $x$。

資料滿足:

  • $1 \leq N \leq 100000$
  • $1 \leq Q \leq 100000$
  • $1 \leq C \leq 30$
  • $0 \leq a_i,x < 2^ C$
  • $1 \leq l \leq r \leq N$
  • $1 \leq p \leq N$

Output Format

對於每個種類 1 的詢問,請輸出一行為 $f(l, r)$ 的值。

Sample Input 1

2 5 5
19 7
2 1 11
2 2 22
1 1 2
1 1 1
2 1 8

Sample Output 1

29
11

Sample Input 2

5 10 30
278340594 955845789 1013514552 786990711 310597564
2 4 187096348
2 2 672110855
1 4 5
2 5 59458182
1 3 5
2 4 243703259
2 1 723264943
2 5 708150450
1 4 4
2 2 739172079

Sample Output 2

1040034531
1014283641
243703259

Hints

以下為計算兩個整數的 NAND 範例

int C;
int nand(int x, int y) {
    int mask = (1 << C) - 1;
    int ret = ~(x & y);
    return ret & mask;
}

Problem Source

IOICamp 2022 Day2 pG

Subtasks

No. Testdata Range Constraints Score
1 0~1 範例測資 0
2 0~11 $N, Q \leq 100$ 25
3 0~31 無額外限制 75

Testdata and Limits

No. Time Limit (ms) Memory Limit (VSS, KiB) Output Limit (KiB) Subtasks
0 1000 262144 65536 1 2 3
1 1000 262144 65536 1 2 3
2 1000 262144 65536 2 3
3 1000 262144 65536 2 3
4 1000 262144 65536 2 3
5 1000 262144 65536 2 3
6 1000 262144 65536 2 3
7 1000 262144 65536 2 3
8 1000 262144 65536 2 3
9 1000 262144 65536 2 3
10 1000 262144 65536 2 3
11 1000 262144 65536 2 3
12 1000 262144 65536 3
13 1000 262144 65536 3
14 1000 262144 65536 3
15 1000 262144 65536 3
16 1000 262144 65536 3
17 1000 262144 65536 3
18 1000 262144 65536 3
19 1000 262144 65536 3
20 1000 262144 65536 3
21 1000 262144 65536 3
22 1000 262144 65536 3
23 1000 262144 65536 3
24 1000 262144 65536 3
25 1000 262144 65536 3
26 1000 262144 65536 3
27 1000 262144 65536 3
28 1000 262144 65536 3
29 1000 262144 65536 3
30 1000 262144 65536 3
31 1000 262144 65536 3