2022年6月12日 星期日

f679: 公會成員

解題心得

原本left<=right沒有加等號,加上後就過了。

程式碼

#include<iostream>
#include<vector>
using namespace std;

int main()
{
	long long int n, q, x, t;
	vector<long long int> v;

	cin >> n >> q;
	for (int i = 0; i < n; i++)
	{
		cin >> x;
		v.push_back(x);
	}
	while (q--)
	{
		cin >> t;
		int left = 0, right = v.size() - 1, mid = (left + right) / 2;
		bool flag = false;
		while (left <= right)
		{
			if (v[mid] == t)
			{
				flag = true;
				break;
			}
			else if (v[mid] < t)
			{
				left = mid + 1;
			}
			else
			{
				right = mid - 1;
			}
			mid = (left + right) / 2;
		}
		if (flag) cout << "Yes" << endl;
		else cout << "No" << endl;
	}
	
	return 0;
}

沒有留言:

張貼留言