某公司为新用户推出大礼包,用户从任意一天注册后,可以连续登录x天并领取金币。金币数量与一年中n个月的日历相关,每个月第一天得1个金币,第二天得2个金币,以此类推。输入包含月数n和连续登录天数x,以及每个月的天数d1,d2,…,dn。要求计算用户在注册后连续登录x天,最多可以获得的金币总数,且连续登录可能跨年。
塔子哥希望找到连续 x
天内可以获得最多金币的方案。为了实现这一目标,我们的日历数据是一个长度为 n
的数组 d
,其中每个元素表示每个月的天数。由于塔子哥可以跨越到下一年的第一个月,因此我们需要考虑跨年情况。为了解决这个问题,我们采用了以下思路:
d
复制一份,形成一个长度为 2n
的数组。这一做法确保我们可以在任何地方找到长度为 x
的连续天数,并且能够平滑地处理跨年情况。某公司日对新用户推出大礼包,从任意一天注册开始,连续登录x天,每天可以领取一定的金币,领取金币的数量与该公司新设计的虚假世界的日历相关,该日历一年有n个月,第i个月有di天,每一年都一样。在每个月第一天会得到1个金币,第天会得到2个金币币第三天会得到3个金币,后面次类推。 请计算新用户注册后连续登陆x天,最多可以获取多少金币。 请注意,连续登陆可能会跨年。
解答要求 时间限制:C/C++ 500ms,其他语言:1000ms
内存限制:C/C++ 256MB, 其他语言:512MB
输入
第一行包含两个整数n和x(1≤n≤2∗105),分别表示一年中的月数和连续登陆的天数。第二行包含 n 个整数 d1,d2,...,dn,di表示第i个月的天数(1≤di≤106) 用例保证,1≤x≤d1+d2+...+dn。
输出
打印新用户连续号陆x天最多可以获取的金币数量
样例1
输入
3 2
1 3 1
输出
5
解释
一年中每天获取的金币数是{1,1,2,3,1}(对应每个月中的天数)。如果在一年中的第3天开始注册陆,最多可以获取 2+3=5 个金币。
样例2
输入
3 6
3 3 3
输出
12
解释
一年中每天获取的金币数是{1,2,3,1,2,3,1,2,3}(对应每个月中的天数)。如果在一年中的第12天开始注册登陆,最多可以获取3+1+2+3+1+2=12个金币.
样例3
输入
5 6
4 2 3 1 3
输出
15
解释
一年中每天获取的金币数是{1,2,3,4,1,2,1,2,3,1,1,2,3}(对应每个月中的天数)。如果在一年中的第12天开始注册登陆,最多可以获取2+3+1+2+3+4=15个金币