社区讨论

70 TLE求条

B2166查找不重复元素出现的位置参与者 2已保存回复 2

讨论操作

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

当前回复
2 条
当前快照
1 份
快照标识符
@mlisx6f3
此快照首次捕获于
2026/02/12 09:50
上周
此快照最后确认于
2026/02/12 11:10
上周
查看原帖
cin printf map和数组和动态数组 二分和lower_bound 都试过了,已经没招了,九名啊
CPP
#include <bits/stdc++.h>
using namespace std;
int BinSearch(int a[],int left,int right,int x)   //二分查找x在数组中的位置,返回下标
{
	while(left<=right)
	{
		int mid=(left+right)/2;
		if(a[mid]==x)
			return mid;
		if(a[mid]>x)
			right=mid-1;
		if(a[mid]<x)
			left=mid+1;
	}
	return -1;     //找不到x
}
int main()
{
	int n,m; cin>>n>>m;
	vector<int> a(n);
	for(int i=0; i<n; i++)
		scanf("%d", &a[i]);
	for(int i=0; i<m; i++)
	{
		int x; cin>>x;
		int pos=lower_bound(a.begin(), a.end(), x)-a.begin();//0-(n-1)
		if(pos<n && a[pos]==x)
			printf("%d\n", pos+1);
		else
			printf("-1\n");
	}
	return 0;
}

回复

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

正在加载回复...