社区讨论

五个RE

P2249【深基13.例1】查找参与者 2已保存回复 4

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
4 条
当前快照
1 份
快照标识符
@lo9jjk7q
此快照首次捕获于
2023/10/28 12:27
2 年前
此快照最后确认于
2023/10/28 12:27
2 年前
查看原帖
人有点麻
C
#include<iostream>
using namespace std;
int main()
{
	int n = 0, m = 0;
	cin >> n >> m;
	int arr[100000];
	for (int i = 0; i < n; i++)//放进到原数组中
	{
		cin >> arr[i];
	}
	int arr1[100000];//放一个比较数组
	for (int i = 0; i < m; i++)
	{
		cin >> arr1[i];
	}
	int x = 0, y = n;//变成数组的范围内
	int k = 0,j=0;
	for(int i=0;i<m;i++)//询问次数
	{
		x = 0, y = n;
		while (x < y)
		{
			j = x + (y - x >> 1);//中点一直在更新
			if (arr[j] >= arr1[k])
			{
				y = j;
			}
			else if (arr[j] < arr1[k])
			{
				x = j + 1;
			}
		}
		if (x == y && arr[x] != arr1[k])
		{
			k++;
			if (k == m)
			{
				cout << "-1";
			}
			else
{
				cout << "-1" << " "; 
			}
			
		}
		else 
		{ 
			k++;
			cout<< x+1<<" ";
		}
	}
	
	return 0;
}

回复

4 条回复,欢迎继续交流。

正在加载回复...