社区讨论
dalao帮忙看看,第一个wa,最后一个tle了(悲)
P2249【深基13.例1】查找参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @lo2tqns1
- 此快照首次捕获于
- 2023/10/23 19:38 2 年前
- 此快照最后确认于
- 2023/10/23 19:38 2 年前
CPP
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1000001;
int nums[MAXN];
int find(int x, int n) {
int left = 1;
int right = n;
while (left <= right) {
int mid = left + (right - left) / 2;
if (nums[mid] < x)
left = mid + 1;
else if (nums[mid] > x)
right = mid - 1;
else {
while (nums[mid] == x) mid--;
return mid + 1;
}
}
return -1;
}
int main() {
int n, m;
int x;
cin >> n >> m;
for (int i = 1; i <= n; i ++) {
cin >> nums[i];
}
for (int i = 1; i <= m; i ++) {
cin >> x;
cout << find(x, n) << " ";
}
return 0;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...