疯狂星期八
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

这天是疯狂星期八,小 Q 想去 KFC 大快朵颐。

KFC 现在只有 n 个食物,第 i 个食物有一个 a_i 代表它的价钱。

但是苦命的打工人小 Q 只有 m 块钱,他想要尽可能的大快朵颐,在他认为吃得多才能吃的爽。

但是因为今天不是疯狂星期四而是疯狂星期八,KFC 存在负优惠,负优惠表示为当前你已经吃了 x 个食物,然后吃第 i 个食物花费的价钱为 ,并不是普通的加起来。

所以请你帮帮苦命的打工人能尽可能多吃食物,并将最多的食物数量输出出来。

输入描述:

第一行给出两个整数 ,分别代表 KFC 食物的数量和小 Q 所带钱的数量。

接下来一行包含 n 个数字表示数组 a :,代表第 i 个食物的价钱。

输出描述:

输出一个整数表示小 Q 能吃到食物的最大数量。
示例1

输入

复制
3 15
1 1 1

输出

复制
3

说明

吃第一个食物花费的价钱为 a_1+0 \times 1.

吃第二个食物花费的价钱为 a_2+1 \times 2.

吃第三个食物花费的价钱为 a_3+2 \times 3.

花费的总价钱为 11.

当然,你也可以选择先吃第二个,再吃第一个,最后吃第三个.

吃第二个食物花费的价钱为 a_2+0 \times 2.

吃第一个食物花费的价钱为 a_1+1 \times 1.

吃第三个食物花费的价钱为 a_3+2 \times 3.

备注:

只要其总花费不超过你所拥有的钱,你就可以按任何顺序去吃食物。