CF1037F.Maximum Reduction

普及/提高-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

Given an array aa of nn integers and an integer kk ( 2kn2 \le k \le n ), where each element of the array is denoted by aia_i ( 0i<n0 \le i < n ). Perform the operation zz given below on aa and print the value of z(a,k)z(a,k) modulo 109+710^{9}+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 nn and kk ( 2kn1062 \le k \le n \le 10^6 ) — the length of the initial array aa and the parameter kk .

The second line of input contains nn integers a0,a1,,an1a_0, a_1, \ldots, a_{n - 1} ( 1ai1091 \le a_{i} \le 10^9 ) — the elements of the array aa .

输出格式

Output the only integer, the value of z(a,k)z(a,k) modulo 109+710^9+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)a=(9,1,10) , ans=19ans=19 and b=(9,10)b=(9,10) ,
  • for a=(9,10)a=(9,10) , ans=10ans=10 and b=(10)b=(10) ,
  • for a=(10)a=(10) , ans=0ans=0 .

So the returned value is 19+10+0=2919+10+0=29 .

In the second example:

  • for a=(5,8,7,1,9)a=(5,8,7,1,9) , ans=25ans=25 and b=(8,8,9)b=(8,8,9) ,
  • for a=(8,8,9)a=(8,8,9) , ans=9ans=9 and b=(9)b=(9) ,
  • for a=(9)a=(9) , ans=0ans=0 .

So the returned value is 25+9+0=3425+9+0=34 .

首页