c语言#1WA #6TLE 求大佬帮改进
查看原帖
c语言#1WA #6TLE 求大佬帮改进
1053560
Kotori_Kawaii楼主2023/10/26 10:20
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>
int a[1000050];//n个数
int b[100050];//m次询问
int main()
{
	int n, m;//n个数 m次询问
	int left, right, mid;//左下标 右下标 中下标
	scanf("%d%d", &n, &m);
	for (int i = 0; i < n; i++) 
		scanf("%d", &a[i]);
	for (int i = 0; i < m; i++) 
		scanf("%d", &b[i]);
	for (int i = 0; i < m; i++) {
		left = 0,right = n - 1;
		while (left <= right) {
			mid = left - (left - right) / 2;
			if (a[mid] > b[i]) right = mid - 1;
			else if (a[mid] < b[i]) left = mid + 1; 
			else{
				while (a[mid]==b[i]) {//待优化
					--mid;
				}
				break;
			}
		}
		if (b[i] - a[mid+1]) {
			printf("-1 ");
		}
		else {
			printf("%d ", mid + 2);
		}
	}
	return 0;
}

脑子烧掉了QAQ

2023/10/26 10:20
加载中...