求助:把二分写成函数后就AC了
查看原帖
求助:把二分写成函数后就AC了
661965
Qin_1楼主2022/8/29 22:57

第一种全WA,第二种全AC但是我觉得两种没有区别,求大佬帮忙orz 一

#include<iostream>
using namespace std;

const int N = 1e6 + 10;
int q[N];
int n, m;

int main()
{
	scanf("%d%d", &n, &m);
	for (int i = 1; i <= n; i++) scanf("%d", &q[i]);
	while (m--)
	{
		int l = 1, r = n;
		int x;
		scanf("%d", &x);
		while (l < r)
		{
			int mid = l + r >> 1;
			if (q[mid] >= x) r = mid;
			else l = mid + 1;
		}
		if (q[l] != x) printf("%d", -1);
		else printf("%d ", l);
	}
	return 0;
}

#include<iostream>
using namespace std;

const int N = 1e6 + 10;
int q[N];
int n,m;

int SL(int l, int r, int x)
{
	while (l < r)
	{
		int mid = l + r >> 1;
		if (q[mid] >= x) r = mid;
		else l = mid + 1;
	}
	if (q[l] != x) return -1;
	else return l;
}

int main()
{
	scanf("%d%d", &n,& m);
	for (int i = 1; i <= n; i++) scanf("%d", &q[i]);
	while (m--)
	{
		int l = 1, r = n ;
		int x;
		scanf("%d", &x);
		printf("%d ", SL(l, r, x));
	}
	return 0;
}
2022/8/29 22:57
加载中...