社区讨论
二分第一个点wa
P2249【深基13.例1】查找参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @lobppmbn
- 此快照首次捕获于
- 2023/10/30 00:55 2 年前
- 此快照最后确认于
- 2023/11/04 05:34 2 年前
CPP
#include <cstdio>
int num[1000010], n;
int check(int x)
{
int l = 1, r = n, mid;
while(l <= r)
{
mid = (l + r) / 2;
if(num[mid] == x)
{
if(num[mid - 1] == x)
r = mid - 1; //找第一个
else
return mid;
}
else if(num[mid] > x)
r = mid - 1;
else
l = mid + 1;
}
return -1;
}
int main()
{
int m, tem;
scanf("%d %d", &n, &m);
for(int i = 1; i <= n; i++)
scanf("%d", &num[i]);
for(int i = 1; i <= m; i++)
{
scanf("%d", &tem);
printf("%d ", check(tem));
}
return 0;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...