最后一个超时了 求指点修改 急急急
查看原帖
最后一个超时了 求指点修改 急急急
866969
telankesi楼主2022/12/22 18:15
#include <stdio.h>
int a[1000010];
int flag = -1;
void fun(int left, int right, int key);
int main() {
	int n,m;
	scanf("%d %d", &n, &m);
	
	for (int i = 1; i <= n; i++) {
		scanf("%d", &a[i]);
	}
	int key;
	for (int j = 0; j < m; j++) {
		scanf("%d", &key);
		flag = -1;
		fun(1, n, key);
			printf("%d ", flag);
	}
	return 0;
}
void fun(int left, int right,int key) {
	if (left < right) {
		int mid = (right + left) / 2;
		if (a[mid] < key) fun(mid + 1, right, key);
		else if (a[mid] > key)fun(left, mid - 1, key);
		else {
			while (a[mid - 1] == key && mid > 1) mid--;
			flag = mid;
		}
	}
	
}
2022/12/22 18:15
加载中...