=( 贪心方法,各位dalao过来看
#include<bits/stdc++.h>
using namespace std;
struct node{
int tele,cost,pos;
}a[200005],b[200005];
bool cmp(node a,node b){
return a.cost<b.cost;
}
int main(){
int t;
cin>>t;
while(t--){
int n,c;
cin>>n>>c;
for(int i=1;i<=n;i++){
cin>>a[i].tele;
a[i].cost=a[i].tele+min(i,n+1-i);
a[i].pos=I;
b[i].cost=a[i].tele+I;
b[i].pos=I;
}
sort(a+1,a+n+1,cmp);
sort(b+1,b+n+1,cmp);
int s=0;
s+=b[1].cost;
if(s>c){
cout<<0<<endl;
continue;
}
int p=b[1].pos,cnt=0,ans=1;
while(s<=c){
if(a[cnt+1].pos==p){
cnt++;
}
if(s>c||cnt+1>n) break;
s+=a[cnt+1].cost;
if(s>c||cnt+1>n) break;
cnt++;
ans++;
}
cout<<ans<<endl;
}
}