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

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

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

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

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

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

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

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

第二行包含 移动石子(秋季每日一题 7)_ios 个整数 移动石子(秋季每日一题 7)_i++_12

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

数据范围
移动石子(秋季每日一题 7)_ios_13
移动石子(秋季每日一题 7)_ios_14
移动石子(秋季每日一题 7)_ios_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;
}