#P5294. [HNOI2019] 序列
[HNOI2019] 序列
题目背景
HNOI2019 day2t3
题目描述
给定一个长度为的序列,以及个操作,每个操作将一个修改为。第一次修改之前及每次修改之后,都要求你找到一个同样长度为的单调不降序列,使得最小,并输出最小值。
需要注意的是每次操作的影响都是独立的,也即每次操作只会对当前询问造成影响。为了避免精度问题,我们保证这个最小值是个分数,也即能表示为两个非负整 数相除的形式:。那么你将要输出的值,表示模意义下的值。其中是一个大质数。
输入格式
输入文件名为sequence.in。
第一行两个非负整数,代表序列长度和操作数。
第二行有个由空格隔开的正整数,代表序列 。
接下来行每行两个正整数, ,代表将修改为。
输出格式
输出文件名为sequence.out。
输出行每行一个整数,第行输出第次修改后的答案。特别的,第1行应为初始局面的答案。
5 3
9 2 4 6 4
1 1
1 4
5 6
28
2
4
26
提示
【样例解释】
第一个询问的最优B序列为:{5 5 5 5 5}。
第二个询问的最优B序列为:{1 2 4 5 5}。
第三个询问的最优B序列为:{3 3 4 5 5}。
第四个询问的最优B序列为:{5 5 5 6 6}。
样例是存在最优方案使皆为整数的特殊情况。
【数据范围】
对于前 10%的数据,保证, ,且存在一种最优方案,使得皆为整数。
对于前 30%的数据,保证 。
对于另外 20%的数据,保证 。
对于另外 20%的数据,保证 。
对于所有数据,保证 $3 \le n \le 10^5,0 \le m \le 10^5,1 \le k, A_i \le 10^9$。
【编译命令】
对于 c++语言: g++ -o sequence sequence.cpp –lm –O2
对于 c 语言: gcc -o sequence sequence.c –lm –O2
对于 pascal 语言: fpc sequence.pas –O2