一共有 移动石子(秋季每日一题 7)_贪心 个箱子排成一排,从左到右依次编号为 移动石子(秋季每日一题 7)_贪心_02

其中,第 移动石子(秋季每日一题 7)_数据_03 号箱子中放有 移动石子(秋季每日一题 7)_ios_04

现在,你可以进行最多 移动石子(秋季每日一题 7)_数据_05

每次操作可以将一个石子从一个箱子移动至另一个与其相邻的箱子里。

我们希望通过合理操作使得 移动石子(秋季每日一题 7)_ios_06

请问,这个最大可能值是多少?

输入格式
第一行包含整数 移动石子(秋季每日一题 7)_i++_07,表示共有 移动石子(秋季每日一题 7)_i++_07

每组数据第一行包含两个整数 移动石子(秋季每日一题 7)_贪心移动石子(秋季每日一题 7)_数据_05

第二行包含 移动石子(秋季每日一题 7)_贪心 个整数 移动石子(秋季每日一题 7)_ios_12

输出格式
每组数据输出一行结果,表示答案。

数据范围
移动石子(秋季每日一题 7)_贪心_13
移动石子(秋季每日一题 7)_贪心_14
移动石子(秋季每日一题 7)_i++_15

输入样例:

3
4 5
1 0 3 2
2 2
100 1
1 8
0

输出样例:

3
101
0

#include<iostream>

using namespace std;

const int N = 110;

int q[N];

int main(){

int t;
cin >> t;

int n, d;
while(t--){

cin >> n >> d;
for(int i = 0; i < n; i++) cin >> q[i];

int res = q[0];
for(int i = 1; i < n; i++){
if(d < i) break;
int x = min(d / i, q[i]);
res += x;
d -= x * i;
}

cout << res << endl;
}

return 0;
}