2K2^K-Flip

시간 제한1초메모리 제한1024 MB

요약
K개의 구간 반전 쿼리를 각각 수행하거나 하지 않는 2^K가지 경우에서 최종 수열의 1 개수 총합을 998244353으로 나눈 나머지를 구한다.
난이도

보통10점 중 6점

유형
누적 합, 조합론, 수학
정답자
아직 제출이 없습니다

문제

경곽이는 길이 NN인 이진 수열 A = \left\\{A\_1, \\, A\_2, \cdots, \\, A\_{N}\right\\}를 발견하였다! 이진 수열이므로 수열의 각 원소는 00 또는 11이다.

경곽이는 이 수열에 적용할 KK개의 구간 쿼리를 가지고 있다. 각 쿼리는 정수 쌍 (l_i,r_i)(l\_i, r\_i)로 주어지며, 이는 수열의 l_il\_i번째 수부터 r_ir\_i번째 수까지인 A_l_i,,A_l_i+1,,⋯ ,A_r_iA\_{l\_i}, \\, A\_{l\_i + 1}, \\, \cdots, A\_{r\_i} 각각을 전부 반전(Flip)하는 연산을 의미한다. 다시 말해, 00은 11로, 11은 00으로 바뀐다.

경곽이는 각 쿼리를 수행할지 말지를 자유롭게 선택할 수 있다고 한다. 단, 쿼리의 순서는 변경할 수 없으며, 쿼리를 하나도 수행하지 않는 경우도 허용된다. 따라서, KK개의 쿼리에 대해 총 2K2^K가지의 수행 조합이 존재하게 된다.

경곽이는 가능한 2K2^K가지의 경우에 대해, 쿼리를 적용한 후 수열에 포함된 11의 개수의 총합을 구하고자 한다. 경곽이를 도와, 가능한 모든 쿼리 수행 조합에 대한 11의 개수의 총합을 998,244,353998 \\, 244 \\, 353으로 나눈 나머지를 출력하는 프로그램을 작성하라.

입력

첫 번째 줄에 두 정수 NN과 KK가 공백으로 구분되어 주어진다. (1≤N,K≤100,0001 \leq N,K \leq 100 \\, 000)

두 번째 줄에 길이 NN인 이진 수열의 원소 A_1,,A_2,,⋯ ,,A_NA\_1, \\, A\_2, \\, \cdots, \\, A\_N이 공백으로 구분되어 주어진다. (A\_i \in \left\\{ 0,1 \right\\} \ (i = 1, \\, 2, \\, \cdots ,\\, N))

세 번째 줄부터 총 KK개의 줄에 걸쳐, 쿼리를 나타내는 두 정수 l_il\_i, r_ir\_i가 공백으로 구분되어 주어진다. (1≤l_i≤r_i≤N (i=1,,2,,⋯ ,,K)1 \leq l\_i \leq r\_i \leq N \ (i = 1, \\,2, \\, \cdots , \\, K))

출력

가능한 모든 2K2^K 가지의 쿼리 수행 조합에 대해, 최종 수열에서 11의 개수의 총합을 998,244,353998 \\, 244 \\, 353으로 나눈 값을 출력하라. 998,244,353998 \\, 244 \\, 353은 소수이다.

예제1

  1. 예제 1

    입력
    5 2
    0 1 0 0 0
    1 3
    3 5
    
    예상 출력
    10