A84813.午枫的填数游戏
普及/提高-
官方
通过率:0%
时间限制:1.00s
内存限制:128MB
题目描述
小午有一个长度为 n 的序列 a ,起初,序列 a 的元素都为 0 。
现在小午给了小枫 q 个数对 (pi,vi) ,要求小枫按顺序执行这 q 个数对,其中每个数对可以按照以下两种方式中的一种进行执行:
- 将序列 a 中 a1,a2,⋯,api 替换为 vi 。但是在执行这个操作之前,必须保证 a1,a2,⋯,api 所有元素都小于或等于 vi 。
- 将序列 a 中 api,api+1,⋯,an 替换为 vi 。但是在执行这个操作之前,必须保证 api,api+1,⋯,an 所有元素都小于或等于 vi 。
如果对于存在一个数对无法执行,那小枫就会生气。
小午想知道有多少种不同的执行序列可以把 q 个数对执行完,如果无法全部执行,则输出 0 。
当且仅当有 1≤i≤q 使得第 i 个执行方式的选择不同时,两个执行序列不同。
输入格式
第一行输入两个整数 n,q (2≤n≤5000,1≤q≤5000) ,分别表示序列 a 的长度以及数对数量。
接下来 q 行,每行两个整数 pi,vi (1≤pi≤n,1≤vi≤109) ,表示第 i 个数对中的元素。
输出格式
输出一个整数,表示有多少种不同的执行序列可以把 q 个数对执行完,由于答案可能很大,最终结果对 998244353 取模。
输入输出样例
输入#1
8 3 1 8 8 1 2 1
输出#1
1
输入#2
8 3 8 1 1 8 1 2
输出#2
0
说明/提示
样例1解释
小枫只能进行以下方式执行:
- 将 a1 替换为 8
- 将 a8 替换为 1
- 将 a2,a3,⋯,a8 替换为 1
没有其他的执行序列不会让小枫生气。