-Flip
시간 제한1초메모리 제한1024 MB
K개의 구간 반전 쿼리를 각각 수행하거나 하지 않는 2^K가지 경우에서 최종 수열의 1 개수 총합을 998244353으로 나눈 나머지를 구한다.
문제
경곽이는 길이 인 이진 수열 A = \left\\{A\_1, \\, A\_2, \cdots, \\, A\_{N}\right\\}를 발견하였다! 이진 수열이므로 수열의 각 원소는 또는 이다.
경곽이는 이 수열에 적용할 개의 구간 쿼리를 가지고 있다. 각 쿼리는 정수 쌍 로 주어지며, 이는 수열의 번째 수부터 번째 수까지인 각각을 전부 반전(Flip)하는 연산을 의미한다. 다시 말해, 은 로, 은 으로 바뀐다.
경곽이는 각 쿼리를 수행할지 말지를 자유롭게 선택할 수 있다고 한다. 단, 쿼리의 순서는 변경할 수 없으며, 쿼리를 하나도 수행하지 않는 경우도 허용된다. 따라서, 개의 쿼리에 대해 총 가지의 수행 조합이 존재하게 된다.
경곽이는 가능한 가지의 경우에 대해, 쿼리를 적용한 후 수열에 포함된 의 개수의 총합을 구하고자 한다. 경곽이를 도와, 가능한 모든 쿼리 수행 조합에 대한 의 개수의 총합을 으로 나눈 나머지를 출력하는 프로그램을 작성하라.
입력
첫 번째 줄에 두 정수 과 가 공백으로 구분되어 주어진다. ()
두 번째 줄에 길이 인 이진 수열의 원소 이 공백으로 구분되어 주어진다. (A\_i \in \left\\{ 0,1 \right\\} \ (i = 1, \\, 2, \\, \cdots ,\\, N))
세 번째 줄부터 총 개의 줄에 걸쳐, 쿼리를 나타내는 두 정수 , 가 공백으로 구분되어 주어진다. ()
출력
가능한 모든 가지의 쿼리 수행 조합에 대해, 최종 수열에서 의 개수의 총합을 으로 나눈 값을 출력하라. 은 소수이다.