先sort,再左右两端指针判断,注意退出条件为l>r。如果l==r,还要加一个。
#include<bits/stdc++.h>
using namespace std;
int main(void){
int t;
cin>>t;
while(t--){
int n,len;
cin>>n>>len;
int a[n+5];
for(int i=0;i<n;i++){
cin>>a[i];
}
sort(a,a+n);
int l=0,r=n-1,ans=0;
while(l<=r){
if(a[r]+a[l]>len){
r--;
ans++;
}
else{
r--;
l++;
ans++;
}
}
cout<<ans<<endl;
if(t) cout<<endl;
}
}