题目背景
译自 8th Romanian Master of Informatics, RMI 2020 D1T3。0.2s,0.25G。
题目描述
这是一道(函数式)交互题。
有 N 只甲虫在桌面上排成一行,从左到右编号为 0∼N−1。第 i 只甲虫的体力为 Si。
每次可以选择连续的至多 K 只甲虫,用 E 的力量去击打它们。被击打的甲虫,若体力不大于 E,则会死亡,否则无事发生。死亡的甲虫会留在原地,可以击打死亡的甲虫。
可以多次击打甲虫,每次 E 的大小可以不同。
定义 f(i) 为:杀死最左边的 i 只甲虫,需要力量和的最小值。对于 i=1,2,⋯,N,求出 f(i)。
为了减小输出量,你只需要求出 (1≤i≤N∑f(i)⋅23N−i)mod(109+7)。
实现细节
你不需要,也不应该实现 main 函数。
你需要实现以下的函数:
交互库会调用 solve
函数恰好一次。参数的含义:
N
:甲虫数量。
K
:一次击打最多击打的连续甲虫数。
S
:每只甲虫的体力。
返回一个整数表示 (1≤i≤N∑f(i)⋅23N−i)mod(109+7)。
输入格式
Sample grader 按照如下格式读取输入:
第一行,两个正整数 N,K;
第二行,N 个正整数 S1,S2,⋯,SN。
输出格式
Sample grader 输出一个整数,表示选手返回的答案。
提示
样例解释
f 的值分别为 3,3,9,12,12,20,23,23。
数据范围
对于 100% 的数据,保证:
- 1≤K≤N≤2.5×106;
- 1≤Si≤2×109。
子任务编号 |
N,Q≤ |
得分 |
1 |
2×103 |
18 |
2 |
4×105 |
31 |
3 |
2.5×106 |
51 |