Time Limit: 2 sec / Memory Limit: 1024 MB
配点 : 400 点
問題文
一列に並んだ N マスから成るマス目があり、マスには左から順番に1, 2, \ldots, N の番号がついています。
このマス目で暮らしている高橋君は、現在マス 1 にいて、後述の方法で移動を繰り返してマス N へ行こうとしています。
10 以下の整数 K と、共通部分を持たない K 個の区間 [L_1, R_1], [L_2, R_2], \ldots, [L_K, R_K] が与えられ、これらの区間の和集合を S とします。ただし、区間 [l, r] は l 以上 r 以下の整数の集合を表します。
- マス i にいるとき、S から整数を 1 つ選んで (d とする)、マス i + d に移動する。ただし、マス目の外に出るような移動を行ってはならない。
高橋君のために、マス N に行く方法の個数を 998244353 で割った余りを求めてください。
制約
- 2 \leq N \leq 2 \times 10^5
- 1 \leq K \leq \min(N, 10)
- 1 \leq L_i \leq R_i \leq N
- [L_i, R_i] と [L_j, R_j] は共通部分を持たない (i \neq j)
- 入力はすべて整数である
入力
入力は以下の形式で標準入力から与えられる。
N K L_1 R_1 L_2 R_2 : L_K R_K
出力
高橋くんがマス 1 からマス N に行く方法の個数を 998244353 で割った余りを出力せよ。
入力例 1
5 2 1 1 3 4
出力例 1
4
集合 S は 区間 [1, 1] と区間 [3, 4] の和集合であり、S = \{ 1, 3, 4 \} です。
マス 5 へ移動する方法は次の 4 通りが考えられます。
- マス 1, 2, 3, 4, 5 の順に移動する。
- マス 1, 2, 5 の順に移動する。
- マス 1, 4, 5 の順に移動する。
- マス 1, 5 の順に移動する。
入力例 2
5 2 3 3 5 5
出力例 2
0
S = \{ 3, 5 \} であり、そもそもマス 5 にたどり着けないので 0 を出力してください。
入力例 3
5 1 1 2
出力例 3
5
入力例 4
60 3 5 8 1 3 10 15
出力例 4
221823067
998244353 で割った余りを出力することに注意してください。
Score : 400 points
Problem Statement
There are N cells arranged in a row, numbered 1, 2, \ldots, N from left to right.
Tak lives in these cells and is currently on Cell 1. He is trying to reach Cell N by using the procedure described below.
You are given an integer K that is less than or equal to 10, and K non-intersecting segments [L_1, R_1], [L_2, R_2], \ldots, [L_K, R_K]. Let S be the union of these K segments. Here, the segment [l, r] denotes the set consisting of all integers i that satisfy l \leq i \leq r.
- When you are on Cell i, pick an integer d from S and move to Cell i + d. You cannot move out of the cells.
To help Tak, find the number of ways to go to Cell N, modulo 998244353.
Constraints
- 2 \leq N \leq 2 \times 10^5
- 1 \leq K \leq \min(N, 10)
- 1 \leq L_i \leq R_i \leq N
- [L_i, R_i] and [L_j, R_j] do not intersect (i \neq j)
- All values in input are integers.
Input
Input is given from Standard Input in the following format:
N K L_1 R_1 L_2 R_2 : L_K R_K
Output
Print the number of ways for Tak to go from Cell 1 to Cell N, modulo 998244353.
Sample Input 1
5 2 1 1 3 4
Sample Output 1
4
The set S is the union of the segment [1, 1] and the segment [3, 4], therefore S = \{ 1, 3, 4 \} holds.
There are 4 possible ways to get to Cell 5:
- 1 \to 2 \to 3 \to 4 \to 5,
- 1 \to 2 \to 5,
- 1 \to 4 \to 5 and
- 1 \to 5.
Sample Input 2
5 2 3 3 5 5
Sample Output 2
0
Because S = \{ 3, 5 \} holds, you cannot reach to Cell 5. Print 0.
Sample Input 3
5 1 1 2
Sample Output 3
5
Sample Input 4
60 3 5 8 1 3 10 15
Sample Output 4
221823067
Note that you have to print the answer modulo 998244353.