样例过了也参照题解把需要注意的地方完善了但还是WA求大佬救救
查看原帖
样例过了也参照题解把需要注意的地方完善了但还是WA求大佬救救
447562
像素旋转楼主2021/1/24 13:06
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn = 10000;
int count0 = 1;
int main(void)
{
	int N, Q;
	while (cin >> N >> Q) {
		int a[maxn]{ 0 }, b[maxn]{ 0 };
		int flag = 0;
		if (N == 0 && Q == 0)
			break;
		cout << "CASE# " << count0 << ":" << endl;
		for (int i = 1; i <= N; i++)
			cin >> a[i];
		sort(a+1, a + N+1);
		//将a[]排序
		for (int i = 0; i < Q; i++) {
			cin >> b[i];
			//二分查找
			//好像不能在第一次找到以后就输出
			int mid,k;
			int low = 1, high = N ;
			for (; low <= high;) {
			    mid = (low+high) / 2;
				if (b[i]<a[mid]) 
					high = mid-1;
				if (b[i] > a[mid])
					low = mid + 1;
				if (b[i] == a[mid]){
					flag = 1;
					break;
				}
			}
			if (flag == 1) {
				//找到这个第一次找到的前面有没有同样的数
				for (int k = 1; k < mid; k++)
					if (a[k] == a[mid])
						mid = k;
				cout << b[i] << " " << "found"
					<< " " << "at" << " " << mid << endl;
			}
			else
				cout << b[i] << " " << "not" << " "
				<< "found" << endl;
		}
		count0++;
	}
	return 0;
}
2021/1/24 13:06
加载中...