CF1037F.Maximum Reduction
普及/提高-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Given an array a of n integers and an integer k ( 2≤k≤n ), where each element of the array is denoted by ai ( 0≤i<n ). Perform the operation z given below on a and print the value of z(a,k) modulo 109+7 .
function z(array a, integer k):
if length(a) < k:
return 0
else:
b = empty array
ans = 0
for i = 0 .. (length(a) - k):
temp = a[i]
for j = i .. (i + k - 1):
temp = max(temp, a[j])
append temp to the end of b
ans = ans + temp
return ans + z(b, k)
输入格式
The first line of input contains two integers n and k ( 2≤k≤n≤106 ) — the length of the initial array a and the parameter k .
The second line of input contains n integers a0,a1,…,an−1 ( 1≤ai≤109 ) — the elements of the array a .
输出格式
Output the only integer, the value of z(a,k) modulo 109+7 .
输入输出样例
输入#1
3 2 9 1 10
输出#1
29
输入#2
5 3 5 8 7 1 9
输出#2
34
说明/提示
In the first example:
- for a=(9,1,10) , ans=19 and b=(9,10) ,
- for a=(9,10) , ans=10 and b=(10) ,
- for a=(10) , ans=0 .
So the returned value is 19+10+0=29 .
In the second example:
- for a=(5,8,7,1,9) , ans=25 and b=(8,8,9) ,
- for a=(8,8,9) , ans=9 and b=(9) ,
- for a=(9) , ans=0 .
So the returned value is 25+9+0=34 .