优先移动距离第一个箱子近的箱子
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 110;
int a[N];
int main()
{
int T;
cin >> T;
while(T--)
{
int n,d;
cin >> n >> d;
for(int i = 0;i < n;i++) cin >> a[i];
int sum = a[0];
for(int i = 1;i < n;i++)
{
while(a[i] != 0 && i <= d)//箱子不空,距离小于d
{
sum += 1;
d -= i;
a[i] -= 1;
if(d == 0 || a[i] == 0) break;//次数用完或者箱子空了
}
}
cout << sum << endl;
}
return 0;
}