二分查找

原创 2012年03月28日 23:01:25
There are m positive integers in set S.can we find two elements in set s and the sum of them equal to X?

Input

The first line of the input file contains a single integer n(the number of test cases)(2=<n<=3000),Each test case consist of two lines,the first line containing an integer m(the number of elements in set S)(2<=m<=2011), followed by an integer x(0<=x<=20000) , the next line contains m positive integers.

Output

For each test case you should output "YES" (if the sum of two elements in set S equal to x),or "NO"(if not).

Sample Input

2
3 5
1 2 3
4 10
1 2 3 4


Sample Output

YES

NO


#include<iostream>
using namespace std;
#define MAX 2015

int binarySearch(int a[],int low,int high,int cnt)
{
	int mid;
	while(low<=high)
	{
		mid=(low+high)/2;
		if(a[mid]==cnt)
			return 1;
		else
			if(a[mid]<cnt)
				low=mid+1;
			else
				high=mid-1;
	}
	return 0;
}

int main()
{
	int n,m,x,i;
	int a[MAX];
	cin>>n;
	while(n--)
	{
		memset(a,0,MAX);
		cin>>m>>x;
		for(i=0;i<m;i++)
			cin>>a[i];
		int k=0;
		for(i=0;i<m;i++)
			if(a[i]<=x/2&&a[i+1]>x/2)
				k=i;
		int flag=0;
		if(k==0)
			cout<<"NO"<<endl;
		else
		{
			for(i=k+1;i<m;i++)
				if(binarySearch(a,0,k,x-a[i]))
				{
					flag=1;
					break;
				}
			if(flag)
				cout<<"YES"<<endl;
			else
				cout<<"NO"<<endl;
		}
	}
	return 0;
}


二分查找教程

  • 2014年10月11日 22:40
  • 226KB
  • 下载

二分查找

  • 2015年06月11日 21:55
  • 3KB
  • 下载

判断给定的二叉树是否为二分查找树

笔试题: 判断给定的二叉树是否为二分查找树。假设树的每个节点都是以整数为键值,且不同节点值不相同。 返回结果:是二分查找树返回true,否则返回false。 输入: 5 5:2|1 2:...

二分查找解题

  • 2013年11月02日 22:17
  • 1KB
  • 下载

二分查找算法

  • 2012年07月29日 10:25
  • 683KB
  • 下载

二分查找与斐波那契数递归与非递归的时间复杂度与空间复杂度

1、二分查找 非递归 非递归二分查找: 时间复杂度为O(logn) 时间复杂度为O(1) 递归实现 非递归二分查找: 时间复杂度为O(logn) 时间复杂度为O(1) 2、斐波那契数...

二分查找ppt

  • 2013年05月26日 16:55
  • 339KB
  • 下载

C例子:二分查找法

  • 2015年07月27日 21:42
  • 1KB
  • 下载

C语言排序(二)——二分查找

一.实验内容 ①顺序查找算法与二分查找算法比较。 a.定义两个函数分别实现顺序查找和二分查找算法。 b.主函数中用产生随机数的方式随机产生待查数据,通过调用口面编写函数查找指定的数据。 c...

C语言二分查找法

  • 2015年10月25日 14:43
  • 450B
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:二分查找
举报原因:
原因补充:

(最多只允许输入30个字)