最佳复习效果
题号:NC214612
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

快要临近期末了,ww为了能够不挂科,于是决定开始复习。

ww有n门课程准备复习,每门课程有不同的难度值,由于时间有限,ww打算挑两门课复习。

ww的学力值为k,每次复习完一门课程,ww学力会减少,即学力扣去该课程相应难度。

ww不会让自己的学力低于0,以保证自己可以正常考试。

现在ww想知道自己能得到的最大复习效果是多少。

复习效果的定义为:复习的两门课程的难度的乘积。

输入描述:

第一行输入两个整数n,k,表示课程数量和ww的学力值

第二行输入n个整数,表示每门课程的难度值

提示:所给数据保证ww能复习两门课程,且课程难度必定由小到大给出。

输出描述:

一个数字,表示可以得到的最大复习效果
示例1

输入

复制
5 5
1 2 3 4 5

输出

复制
6

说明

示例1中,

ww可以先复习第5门课,复习完学力减少,之后k=0,然而此后ww找不出第二门课程复习(复习后学力会低于0)

ww先复习第4门课,之后k=1,第二次ww只能复习第1门课,复习效果为4*1=4

ww先复习第3门课,之后k=2,第二次ww可以复习第1、2门课,复习效果为3*1=3, 3*2=6

...

...

最大复习效果为6(复习第2、3门课程)

备注:

数据很大,不要乱搞,请尽量优化你的算法