#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=500100;
int n,q,ans[N];
double a[N],avg[N];
struct node{
int k,num;
}pr[N];
bool cmp(int a,int b){
return a>b;
}
bool cmpy(node x,node y){
return x.k>y.k;
}
void solve(){
scanf("%d%d",&n,&q);
memset(ans,0,sizeof(ans));
for(int i=1;i<=n;i++){
scanf("%lf",&a[i]);
}
for(int i=1;i<=q;i++){
scanf("%d",&pr[i].k);
pr[i].num=i;
}
sort(a+1,a+n+1,cmp);
sort(pr+1,pr+q+1,cmpy);
for(ll i=1;i<=n;i++){
avg[i]=(avg[i-1]*(double)(i-1)+a[i])/(double)i;
}
int now=1;
for(int i=n;i>=1&&now<=q;i--){
while(avg[i]-(double)pr[now].k<=a[i]&&now<=q){
ans[pr[now].num]=i;
now++;
}
}
for(int i=1;i<=q;i++)printf("%d ",ans[i]);
puts("");
}
int main(){
int t;
scanf("%d",&t);
while(t--){
solve();
}
return 0;
}
评测结果
https://www.luogu.com.cn/record/62465136