题目大意:
呵呵。。。。它说输入的是正整数,结果测试数据里面有0.。。。
解题思路:
直接上代码了,其实我是想计算小于等于K/2的。。。。
#include<stdio.h>
#include<algorithm>
#define N 100010
using namespace std;
int main()
{
int n,i,j,t,ans;
int m,right,left,mid,a[N],cur;
scanf("%d",&t);
while(t--){
scanf("%d %d",&n,&m);
for(i=0;i<n;i++){
scanf("%d",&a[i]);
// if(a[i]==0) 当AC之后看看测试数据到底有没有零
// break;
}
sort(a,a+n);
ans=0;
for(i=0;i<n;i++)
{
cur=m-a[i];
left=0;right=n-1;
if(i==0||a[i]!=a[i-1])
while(left<=right)
{
mid=(left+right)/2;
if(a[mid]==cur){
ans+=1;
break;
}
else if(a[mid]<cur)
left=mid+1;
else
right=mid-1;
}
}
printf("%d\n",ans);
}
}