五个wa一个tle,请问哪里错了,样例正确
查看原帖
五个wa一个tle,请问哪里错了,样例正确
758167
iArazy楼主2022/8/23 21:18
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;


int n = 0; //数字个数
int m = 0; //询问次数
int u = 1; 
int arr[1000010];
int search[100010];

int find() {
	int l = 1;
	int r = n;
	int mid = n / 2;
	while (l <= r) {
		mid = (l + r) / 2;
		if (arr[mid] < search[u]) {
			l = mid + 1;
		}
		else if (arr[mid] > search[u]) {
			r = mid - 1;
		}
		else if (arr[mid] == search[u]) {
			while (arr[mid - 1] == search[u] && mid <= n / 2) {
				mid--;
			}
			return mid;
		}
	}
	return -1;
}
int main() {
	//输入数字个数和询问次数
	scanf("%d %d", &n, &m); 
	//输入待查询的数字
	for (int i = 1; i <= n; i++) {
		scanf("%d", &arr[i]);

	}
	//输入查找的数字
	for (int k = 1; k <= m; k++) {
		scanf("%d", &search[k]);

	}
	//find
	for (int j = 1; j <= m; j++) {
		int ans = find();
		cout << ans <<" ";
		u++;
	}
	return 0;
}
2022/8/23 21:18
加载中...