C++二分

原题链接

#include <bits/stdc++.h>
using namespace std;

const int maxn = 100000 + 5;
int a[maxn];

int main()
{
    
    
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	
	int n, q;
	cin >> n >> q;
	
	for (int i = 0; i < n; i ++)
	{
    
    
		cin >> a[i];
	}
	
	while (q --)
	{
    
    
		int k;
		cin >> k;
		
		int l = 0, r = n - 1;
		while (l < r)
		{
    
    
			int mid = l + r >> 1;
			
			if (a[mid] < k) l = mid + 1;
			else r = mid;	
		}
		
		if (a[l] != k)
		{
    
    
			cout << "-1 -1\n";
		}
		
		else
		{
    
    
			cout << l << ' ';
			
			int l = 0, r = n - 1;
			while (l < r)
			{
    
    
				int mid = l + r + 1 >> 1;
				if (a[mid] <= k) l = mid;
				else r = mid - 1;	
			}
			
			cout << l << endl;
		}	
	}
	
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_50676276/article/details/113760708