문제 설명
길이가 n
인 배열 a
가 주어집니다. 당신은 여기에 q
개의 쿼리를 순차적으로 날려 n
개의 0으로 이루어진 배열을 a
로 만들고자 합니다.
query(l, r, x)
는 다음 수도코드와 같은 역할을 합니다. (0 ≤ l
≤ r
< n
, 1 ≤ x
≤ 105 )
for i = l, l+1, ..., r:
a[i] := max(a[i], x)
q
개의 쿼리를 통해 a
를 만드는 방법은 여러 가지가 있을 수 있습니다. 예를 들어 a = [1,2]
, q = 2
라면 다음 4가지 방법으로 a
를 만들 수 있습니다.
query(0, 0, 1)
,query(1, 1, 2)
query(1, 1, 2)
,query(0, 0, 1)
query(0, 1, 1)
,query(1, 1, 2)
query(1, 1, 2)
,query(0, 1, 1)
정수 q
와 정수 배열 a
가 매개변수로 주어집니다. q
개의 쿼리를 통해 a
를 만드는 방법의 가짓수를 998,244,353으로 나눈 나머지를 return 하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤
q
≤ 50 - 1 ≤
a
의 길이 ≤ 50 - 1 ≤
a
의 모든 원소 ≤ 105
입출력 예
q | a | result |
---|---|---|
2 | [1,2] | 4 |
3 | [3] | 19 |
5 | [1,4,4] | 157740 |
50 | [1,6,5,2,4] | 61953538 |
입출력 예 설명
입출력 예 #1
- 문제 예시와 같습니다.
입출력 예 #2
a
를 만들기 위해 날릴 수 있는 쿼리는 오직query(0, 0, 1)
,query(0, 0, 2)
,query(0, 0, 3)
뿐입니다. 33 = 27가지 경우의 수 중에서query(0, 0, 3)
을 사용하지 않는 8가지 경우를 걸러내면 답은 27 - 8 = 19가 됩니다. 따라서, 19를 return 해야 합니다.
입출력 예 #3
a
를 만들 수 있는 경우의 수가 157,740가지 이므로, 157,740을 return 해야 합니다.
입출력 예 #4
- 설명 생략
실행 결과
실행 중지
실행 결과가 여기에 표시됩니다.