@TOC
前言
看来好久没系统的刷题了,对这种题还是不费吹灰之力,也就是说 我的水平可能也就这点吧(比赛签到题QAQ)
思路
数据范围很小 为了拿的最大
就是把能拿的都拿了即可
我们只需要枚举能拿的就行
CODE
#include <bits/stdc++.h>
#define CYE cout<<"Yes"<<endl;
#define CNE cout<<"No"<<endl;
#define C_1E cout<<"-1"<<endl;
#define s1(a) scanf("%1d",&a)
using namespace std;
const int INF = 0x3f3f3f3f;
const int N = 1e3+10;
void solve()
{
int n,d;
cin>>n>>d;
int ans = 0 ;
for(int i=1;i<=n;i++)
{
int x;
cin>>x;
for(int j = x;j>=1;j -- )
{
if(d>=j*(i-1))
{
ans+=j;
d-=j*(i-1);
break;
}
}
}
cout<<ans<<endl;
}
int main()
{
ios::sync_with_stdio(false);
int t;
cin>>t;
while(t -- )
solve();
return 0;
}