OR과 쿼리
시간 제한1.5초메모리 제한256 MB
배열에 구간 비트 OR 갱신을 적용하면서, 주어진 구간에서 값이 K인 위치의 개수를 센다.
문제
길이가 N인 수열 A1, A2, ..., AN과 음이 아닌 정수 K가 주어진다. 다음 쿼리를 수행하는 프로그램을 작성하시오.
-
1 l r x: 모든 l ≤ i ≤ r에 대해 Ai를 Ai ∨ x로 바꾼다. 여기서 ∨는 bitwise OR 연산이다. -
2 l r: Ai = K를 만족하는 l ≤ i ≤ r의 개수를 출력한다.
수열의 인덱스는 1부터 시작한다.
입력
첫째 줄에 수열의 크기 N (1 ≤ N ≤ 250,000), K (0 ≤ K < 230)가 주어진다.
둘째 줄에는 A1, A2, ..., AN이 주어진다. (0 ≤ Ai < 230)
셋째 줄에는 쿼리의 개수 M (1 ≤ M ≤ 250,000)이 주어진다.
넷째 줄부터 M개의 줄에는 쿼리가 한 줄에 하나씩 주어진다. 2번 쿼리는 하나 이상 주어진다. (1 ≤ l ≤ r ≤ N, 0 ≤ x < 230)
출력
각각의 2번 쿼리마다 정답을 한 줄에 하나씩 출력한다.